Apache POI解决Excel文档

  • 时间:2018-06-19 22:35 作者:AndroidTest 来源:AndroidTest 阅读:149
  • 扫一扫,手机访问
摘要:文章在掘金首发:https://juejin.im/user/57cf9e73bf22ec005f8bca58 前一段时间Java解决Excel文件都是用JXL这个库,后来发现这个库并不支持xlsx这种高版本的格式,并且不可以解决大量的数据,就找到了POI这个库1:Apache POI 是什么 Ap

文章在掘金首发:https://juejin.im/user/57cf9e73bf22ec005f8bca58

前一段时间Java解决Excel文件都是用JXL这个库,后来发现这个库并不支持xlsx这种高版本的格式,并且不可以解决大量的数据,就找到了POI这个库

1:Apache POI 是什么

Apache POI项目的任务是根据Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)创立和维护Java API,以解决各种文件格式。简而言之,能用Java读取和写入Microsoft Excel文件。此外,您能用Java读取和写入Microsoft Word和Microsoft PowerPoint文件

1.1 Apache POI环境

从poi.apache.org/download.ht… 下载最新的POI库,之后解压,获取我们需要的jar

Apache POI解决Excel文档

1.2 创立一个SHEET

创立一个sheet的步骤时首先必需来创立一个工作簿对象(XSSFWorkbook),第二不就是在用XSSFWorkbook对象创立一个sheet

//创件一个工作簿XSSFWorkbook workbook = new XSSFWorkbook();//创立一个电子表格XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

XSSFWorkbook类:能对对Excel进行读写,它兼容.xls和.xlsx格式,支持office的2007或者者更高版本,

HSSFWorkbook类:能对对Excel进行读写,它兼容.xls格式,不支持高版本的office

所以一般我们会用XSSFWorkbook来操作表格,看看如何向单元格里保存数据

public class WriteSheetTest {private static final String PATH = "WriteSheet.xlsx"; //文件路径public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream(PATH); //创立一个工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); //创立一个电子表格 XSSFSheet sheet = workbook.createSheet("mySheet"); //行对象 XSSFRow row ; for(int r = 0 ;r<3;r++) { //1.创立一个行对象 row = sheet.createRow(r); for(int c = 0;c<3;c++) { //2.创立一个单元格 Cell cell = row.createCell(c); cell.setCellValue(r+c); } } FileOutputStream fos = new FileOutputStream(PATH); workbook.write(fos); workbook.close(); }}

Apache POI解决Excel文档

上面的程序中创立了名字为mySheet的电子表格,写了三行三列的数据,POI中用XSSFRow对象表示行对象,用XSSFRow row = sheet.createRow(r);创立一个行对象,参数是行号,Cell表示一个单元格对象,能用行对象XSSFRow创立一个单元格格对象,Cell cell = row.createCell(c);参数是列号。

1.3 读取一个SHEET

public class Readsheet{ static XSSFRow row;public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream( new File("WriteSheet.xlsx")); //打开需要读取的文件 XSSFWorkbook workbook = new XSSFWorkbook(fis); //按照SHEET的名称读取一个电子表格 XSSFSheet sheet = workbook.getSheet("mySheet");// int size = sheet.getLastRowNum();// System.out.println(size);// int s= sheet.getPhysicalNumberOfRows();// System.out.println(s); //获取一个行的迭代器 Iterator rowIterator = sheet.rowIterator(); while(rowIterator.hasNext()) { row = (XSSFRow) rowIterator.next(); Iterator cellIterator = row.cellIterator(); while(cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch(cell.getCellTypeEnum() ) { case NUMERIC: double val = cell.getNumericCellValue(); System.out.print(val+"\t\t"); break ; case STRING: String str = cell.getStringCellValue(); System.out.print(str+"\t\t"); } } System.out.println(); } fis.close(); }}

运行结果:

0.0 1.0 2.0

1.0 2.0 3.0

2.0 3.0 4.0

这里需要注意,在读取单元格的值时需要先判断数据类型,不然获取数据会报数据类型错误。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】Discuz隐藏后台admin.php网址修改路径(2019-12-15 14:52)
【系统环境|服务器应用】Discuz发布帖子时默认显示第一个主题分类的修改方法(2019-12-09 00:13)
【系统环境|软件环境】Android | App内存优化 之 内存泄漏 要点概述 以及 处理实战(2019-12-04 14:27)
【系统环境|软件环境】MySQL InnoDB 事务(2019-12-04 14:26)
【系统环境|软件环境】vue-router(单页面应用控制中心)常见用法(2019-12-04 14:26)
【系统环境|软件环境】Linux中的Kill命令(2019-12-04 14:26)
【系统环境|软件环境】Linux 入门时必学60个文件解决命令(2019-12-04 14:26)
【系统环境|软件环境】更新版ThreeJS 3D粒子波浪动画(2019-12-04 14:26)
【系统环境|软件环境】前台开发WebStorm常用快捷键,火速收藏!(2019-12-04 14:25)
【系统环境|软件环境】微博H5登录和发微博组件(2019-12-04 14:25)
手机二维码手机访问领取大礼包
返回顶部