JAVA使用POI读、写Excel文件
01.前言
当前使用比较多的读取Excel文件API就是POI和JXL。
JXL(Java Excel API) 官网地址:http://jexcelapi.sourceforge.net/
Apache的POI(Poor Obfuscation Implementation)官网地址:http://poi.apache.org/
POI支持微软的OLE2格式文件Office 2003及以下版本;同时支持微软的OOXML(Office Open XML)标准,也就是Office 2007以上版本。JXL只能实现对Excel 2003以下版本的支持。
POI使用HSSF对象操作OLE2格式Excel,文件后缀为.xls的;使用XSSF、SXSSF对象操作OOXML格式Excel,文件后缀为.xlsx的。对于OLE2版本的Excel,一个Sheet工作表它的行最多支持到65536行,列支持到256列;对于OOXML版本的Excel,一个Sheet工作表它的行支持到1048576行,列支持到16384列。
02.POI的使用
02.1.所需要的jar包
jar包下载地址:https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz
本程序使用jar包:poi-3.17.jar poi-ooxml-3.17.jar poi-ooxml-schemas-3.17.jar xmlbeans-2.6.0.jar
02.2.写数据到Excel
@Test
public void writeExcel() throws Exception {
//创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
//创建工作表
XSSFSheet sheet = workbook.createSheet();
//创建行
XSSFRow row = sheet.createRow(2);
//创建单元格,操作第三行第三列
XSSFCell cell = row.createCell(2,CellType.STRING);
cell.setCellValue("hellword");
//
FileOutputStream outputStream = new FileOutputStream(new File("test.xlsx"));
workbook.write(outputStream);
//关闭工作簿
workbook.close();
}
其结果就是就内容“hellword” 写到当前工程的test.xlsx文件的第三行第三列中,如图:
这里写图片描述
02.03.读Excel数据
@Test
public void readExcel() throws Exception {
//打开需要读取的文件
FileInputStream inputStream = new FileInputStream(new File("text.xlsx"));
//读取工作簿
XSSFWorkbook wordBook = new XSSFWorkbook(inputStream);
//读取工作表,从0开始
XSSFSheet sheet = wordBook.getSheetAt(0);
//读取第三行
XSSFRow row = sheet.getRow(2);
//读取单元格
XSSFCell cell = row.getCell(2);//获取单元格对象
String value = cell.getStringCellValue();
System.out.println(value);
//关闭输入流
inputStream.close();
//关闭工作簿
wordBook.close();
}
结果如图:
这里写图片描述03.补充
一些常用操作:
新建工作簿:
HSSFWorkbook wb = new HSSFWorkbook();
打开工作簿:
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(xlsFile));
建立新的sheet对象:
HSSFSheet sheet = wb.createSheet("我的第一个工作簿");
选择第一个工作簿:
HSSFSheet sheet = wb.getSheetAt(0);
设置工作簿的名称:
wb.setSheetName(0, "我的第一个工作簿");
创建行对象:
HSSFRow nRow = null;
nRow = sheet.createRow(1); //第2行
指定列 创建单元格对象:
HSSFCell nCell = null;
nCell = nRow.createCell((short)(2)); //第3列
指定列 创建单元格对象:
nCell.setCellValue("我是单元格");
设置样式 注意:样式不能重复设置
nCell.setCellStyle(leftStyle(wb));
本程序所需要的jar包:链接:https://pan.baidu.com/s/1Canvtaxvk06VHB4g2d8SNw 密码:ev38
具体使用可参照:https://poi.apache.org/spreadsheet/index.html
对于junit的使用可以参照博主的另外一篇博客。
网友评论