一、前言
java程序开发过程中经常需要使用Excel文件来进行数据的导入与导出,本次文章向大家介绍Excel文件解析或生成以及相关方法
二、Excel文件解析的主流技术:
Apache POI、JXL、Alibaba EasyExcel等。
三、技术特点:
Apache POI:基于DOM方式行进解析,将文件直接加载内存,速度快;
适合场景:较小数据量的Excel文件;
JXL:只支持Excel2003以下的版本(并不常用);
Alibaba EasyExcel:采用逐行读取的解析模式,将每一行的解析结果以观察者的模式通知处理
适合场景:较大数据量的Excel文件;
四、主流技术讲解
Apache POI:
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。对不同的格式文件提供不同解析:
HSSF:提供读写Microsoft Excel格式档案的功能(用于解析旧版本(*.xls)Excel文件)
注:旧版本Excel文件只能存在65535行数据,所以HSSF目前不常用
XSSF:提供读写Microsoft Excel OOXML格式档案的功能(用于解析新版本(*.xlsx)Excel文件)
HWLF:提供读写Microsoft Work格式档案的功能
HSLF:提供读写Microsoft PowerPoint格式档案的功能
HDGF:提供读写Microsoft Visio格式档案的功能
XSSF解析Excel文件:
使用XSSF解析Excel文件时必须依赖第三方jar包:
使用XSSF解析Excel文件时最重要的四个接口:Workbook(Excel文件)、Sheet(工作簿)、Row(数据行)、Cell(单元格);,并且提供了一系列静态方法
Workbook(Excel文件):
Workbook接口代表一个Excel文件,用于创建或加载(解析)一个Excel文件,常见实现类有:XSSFWorkbook
创建Excel文件:
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream out = new FileOutputStream("D:\\texs\\"+System.currentTimeMillis()+".xlsx")) {
//将Workbook对象中包含的数据,通过输出流,写入至Excel文件
workbook.write(out);
}catch (IOException e) {
e.printStackTrace();
}
注:仅依靠Workbook类虽然可以创建一个Excel文件,但无法打开;
加载(解析)Excel文件:
try (FileInputStream in = new FileInputStream("D:\\琐碎\\1627356552686.xlsx");
Workbook workbook = new XSSFWorkbook(in)) {
} catch (IOException e) {
e.printStackTrace();
}
Sheet(工作簿):
通过Workbook来进行工作簿Sheet对象的创建与获取
获取工作簿:
Sheet sheet=workbook.getSheet("sheet0");
//按照名称获取工作簿
Sheet sheet=workbook.getSheetAt(0);
//按照下标获取工作簿
创建工作簿:
Sheet sheet=workbook.createSheet();
//创建默认名称工作簿
Sheet sheet=workbook.createSheet("数据表");
//创建名为“数据表”的工作簿
获取工作簿的数量:
int num=workbook.getNumberOfSheets();
Row(数据行):
通过Sheet来进行数据行Row对象的获取与创建
创建数据行:
Row row=sheet.createRow(0);
//按照下标创建行
获取首尾行下标:
int firstRowIndex=sheet.getFirstRowNum();
//获取首行下标
int lastRowIndex=sheet.getLastRowNum();
//获取尾行下标
<