Java解析Excel总结
使用java生成Excel表,或者读取Excel表
Excel表名词解释
工作簿 workbook
工作表 sheet
单元格 cell
开源框架
目前可以完成Excel相关操作的Java框架主要有韩国的jExcelAPI(即jxl)以及Apache的POI框架
JXL支持比较低版本的excel,比如Excel 95 ,97 ,2000,2003
由于Excel版本比较低,导致最大行有限制,无法导出65535以上量级的数据 对于内存,和时间的花费也比POI基于内存+磁盘的方式高。
JXL技术说明
读取Excel公式(可以读取Excel 97以后的公式)
生成Excel数据表(格式为Excel 97)
支持字体、数字、日期的格式化
支持单元格的阴影操作,以及颜色操作
修改已经存在的数据表
是最基础的excel api
小文件读取效率比较高
跨平台
POI技术说明
能保持Excel里原有的宏(但不能用它写新的宏)。
不支持跨平台(主要就是Java语言)
在一些业务场景中代码相对复杂,但是API丰富,支持多种模式的读写。
支持比较新版本的excel.
读写的时候比较占内存。
读写的时候比较占内存。
支持大数量大文件的读写操作。但是需要熟悉API。
总体来说,对于简单的单表excel导入导出的需求,建议使用JXL。数据量稍微小点,占用内存少,速度快。 对于报表类的,涉及月份数据量,多表数据聚合在一起建议使用POI。
使用JXL
添加依赖
maven repository 搜索关键词 JXL
简述
一个excel就对应一个Workbook对象,(Wookbook中含有许多静态方法,所以他也是一个工具类) 一个Workbook可以有多个Sheet对象 一个Sheet对象可以有多个Cell对象
读取Excel
通过Workbook,Sheet ,Cell这三个对象我们就可以实现Excel文件的读取工作。我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历
选取Excel文件得到工作薄
选择工作表
选择Cell
读取信息
读取工作簿
读取工作表
读取单元格
单元格类型:
释放资源
当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。
写入Excel
通过WritableWorkbook,WritableSheet,Label这三个对象我们就可以实现Excel文件的插入工作。我们先想想一下插入,不管是什么样的Excel操作框架必定都要经历
创建Exce工作薄
创建工作表
创建单元格
创建工作簿
API提供了两种方式来处理可写入的输出流,
一直接生成本地文件,如果文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路径的话,则生成的Excel文件则会定位在相应的目录;
将Excel对象直接写入到输出流,例如:用户通过浏览器来访问web服务器,如果HTTP头设置正确的话,浏览器自动调用客户端的Excel应用程序,来显示动态生成的Excel电子表格。
创建可以写入的Excel工作簿:
创建工作表
创建单元格
合并单元格:
添加单元格样式:
写入释放
其他常用API
Workbook类提供的方法
int getNumberOfSheets()获取工作表的总个数Sheet[] getSheets()获取数组型的工作表Sheet getSheet(String name);//得到此对应名称的工作表
Sheet接口提供的方法
String getName()获取工作表的名称int getColumns()获取Sheet表中所包含的总列数Cell[] getColumn(int column)获取某一列的所有单元格,返回的是单元格对象数组int getRows()获取Sheet表中所包含的总行数Cell[] getRow(int row)获取某一行的所有单元格,返回的是单元格对象数组Cell getCell(int column, int row)获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同WritableSheet.setRowView(int i,int height);指定第i+1行的高度WritableSheet.setColumnView(int i,int width);指定第i+1列的宽度
使用POI
添加POI依赖
maven repository 搜索关键词 POI
最后更新于
这有帮助吗?