上一篇为大家介绍了通过xls.jar的方式生成Excel的方法,本篇就为大家再介绍一下通过poi方式实现Excel文件的读写操作,内容很简单,代码注释很清晰。

  1、生成Excel文件:

import java.io.File;
import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class poi_write { public static void main(String[] args) {
final String [] str = {"id", "name", "sex"};
//创建Excel工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
//创建Excel工作表
HSSFSheet sheet = workbook.createSheet();
//创建第一行
HSSFRow row = sheet.createRow(0);
HSSFCell cell = null; //添加表头
for (int i = 0; i < str.length; i++) {
cell = row.createCell(i);
cell.setCellValue(str[i]);
} //追加数据
for (int i = 1; i <= 10; i++) {
HSSFRow rows = sheet.createRow(i);
HSSFCell cell_id = rows.createCell(0);
cell_id.setCellValue(i+"");
HSSFCell cell_name = rows.createCell(1);
cell_name.setCellValue("name:"+i);
HSSFCell cell_sex = rows.createCell(2);
cell_sex.setCellValue("男");
} //文件保存路径
File file = new File("E:/cnblogs/poi_text.xls");
try{
if(!file.exists()){
file.createNewFile();
}
FileOutputStream fileOut = new FileOutputStream(file);//创建一个文件输出流对象
workbook.write(fileOut);
fileOut.close();//关闭输出流对象
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("Excel文件已生成");
} }

  2、读取Excel文件:

import java.io.File;
import java.io.IOException; import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class poi_reading { public static void main(String[] args) {
final File file = new File("E:/cnblogs/poi_text.xls");
if(file.exists()){
try {
HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file));
//workbook.getSheet("Sheet0");获得指定的工作表
//HSSFSheet sheet = workbook.getSheet("Sheet0");
//workbook.getSheetAt(0);默认获得第一个工作表
HSSFSheet sheet = workbook.getSheetAt(0); int firstRowNum = 0;
//获得当前sheet最后一行行号
int lastRowNum = sheet.getLastRowNum();
for (int i = firstRowNum; i <= lastRowNum; i++) {
HSSFRow row = sheet.getRow(i);
//获得当前行最后单元格列号
int lastCellNum = row.getLastCellNum();
for (int j = 0; j < lastCellNum; j++) {
HSSFCell cell = row.getCell(j);
String value = cell.getStringCellValue();
System.out.print(value+" ");
}
System.out.println("");
}
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.out.println("读取文件不存在");
}
} }

  好了,基本的方法已经为大家介绍完毕,更好的效果展示就靠大家自己摸索了。

  不知道大家发现一个问题没?我们生成的Excl文件都是.xls结尾,.xls是office97-2003的版本,而对于2007以后的版本则是以.xlsx结尾。那如何生成高版本的Excel呢?我们不能仅仅是修改一下File文件的后缀名,我们这里需要使用XSSFWorkbook进行创建workbook,然后把剩余的HSSF开头去掉就可以了。不过在这里需要说明的就是,我们不知道用户使用的是低版本还是高版本,所以我们建议大家都使用HSSFWorkbook来进行创建以.xls结尾的Excel文件。

  如有错误,还望指正。谢谢

JAVA实现Excel的读写--poi的更多相关文章

  1. JAVA实现Excel的读写--jxl

    前段时间因为开发网站的需要,研究了一下java实现excel的读写,一般当我们做管理软件时,都需要打印报表,报表如何制作呢?相信一定难为过大家,本篇就为大家揭开它的神秘面纱,学习完半篇,你一定会对报表 ...

  2. 【POI】java对excel的读写操作

    在工作中需要将mongo中的数据导出到excel中,所以根据需要学习了poi.以下为学习内容的总结: 1.POI是什么? poi是Apache团队开发的专门面对用java处理Excel文档的工具. 官 ...

  3. 使用JXL.jar实现JAVA对EXCEL的读写操作

    简介: jxl.jar是通过java操作excel表格的工具类库 jxl操作excel包括对象Workbook(工作簿),Sheet(工作表) ,Cell(单元格). 一个excel就对应一个Work ...

  4. 使用JAVA导出EXCEL表格(POI)

    一.POI概述 Jakarta POI 是一套用于访问微软格式文档的Java API.POI提供API给Java程序对Microsoft Office格式档案读和写的功能.在许多企业办公系统中,经常会 ...

  5. Java生成excel导出文件(使用poi+JXL)

    1.使用poi生成文件 package com.mi.entity; import java.util.Date; public class Student { private int id; pri ...

  6. Java操作Excel(使用POI)

    背景说明 以前写过使用 JXL 操作Excel的例子,但JXL对于Excel 2007版本以后的文件(即扩展名为 .xlsx)无法读取,也找不到可以支持的包.所以,有时不得不用 POI 来操作Exce ...

  7. Java三方---->excel框架之POI的使用一

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.pdf框架之IText的使用,参见我的博客:Java ...

  8. Java导出Excel表,POI 实现合并单元格以及列自适应宽度(转载)

    POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...

  9. java操作excel(通过POI)

    读取所有数据,并打印出来,表单名:testcase 定义实体类(说明:这里单纯打印读取的excel内容,未用到实体类,反射的时候才会用到实体类) package com.qzcsbj; /** * @ ...

随机推荐

  1. [转]c++中vector的使用

    C++中的vector使用范例 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简 ...

  2. babylonjs

    A Babylon.js Primer Table of contents Babylon.js WebGL Game Creation System! The Browser Useful Link ...

  3. iOS开发零基础--Swift篇 循环

    循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...

  4. css小技巧

    每逢大的灾难的时候,很多网站变成了灰色,如何让网站快速变灰?css代码是很简单的,用的是css的filter功能. html { filter: grayscale(100%);//IE浏览器 -we ...

  5. 网页Email抓取 java

    import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; impo ...

  6. for循环三个表达式的执行时间

    for(int i = 0; i < max; i++) { //代码 } 第一个表达式:声明一个变量i,初始值为0,表示当前的循环次数:循环刚开始时执行第二个表达式:循环条件,如果i的值小于m ...

  7. 新装ubuntu12.04需要敲的命令集合

    1.sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup sudo gedit /etc/apt/sources.list copy: ...

  8. U8SDK——游戏接入SDK(只接入抽象框架)

    上一篇文章我们说了整个U8 SDK抽象成的设计,那这篇文章,我们就来验证一下,他是否如我们期待的那样,简单灵活. 正如之前所说,对于每个游戏,只需要接入抽象层,而每个渠道SDK的接入,就是该抽象层的一 ...

  9. zabbix3.x搭建(1)

    服务器端安装配置: 1).安装: yum -y install gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-ma ...

  10. LiveCD DSET日志收集

      DELL的LiveCD是一张PE光盘,最新版本7.1是基于CentOS 6.2系统的. 工具下载地址: http://downloads.dell.com/FOLDER01960516M/1/SL ...