前言:
在Java技术生态圈中,可以进行Excel文件处理的主流技术包括:Apache POI、JXL、Alibaba EasyExcel等。
Apache POI基于DOM方式进行解析,将文件直接加载内存,所以速度较快,适合Excel文件数据量不大的应用场景。JXL只支持Excel 2003以下版本,所以不太常见。
Alibaba EasyExcel采用逐行读取的解析模式,将每一行的解析结果以观察者的模式通知处理(AnalysisEventListener),所以比较适合数据体量较大的Excel文件解析。
一、Apache POI
Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供给Java程序对Microsoft Office格式档案进行读写功能的API开源类库。
它分别提供对不同格式文件的解析:
●HSSF - 提供读写Microsoft Excel格式档案的功能。
●XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
●HWPF - 提供读写Microsoft Word格式档案的功能。
●HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
●HDGF - 提供读写Microsoft Visio格式档案的功能。
二、XSSF解析Excel文件
HSSF用于解析旧版本(*.xls)Excel文件,由于旧版本的Excel文件只能存在65535行数据,所以目前已经不常用。所以目前主要采用XSSF进行新版本(*.xlsx)Exce文件的解析。
需要的jar包:在我的资源里
WorkBook(Excel文件)
WorkBook是一个接口,所以创建WorkBook引用时需指向子类对象创建好以后所代表的是一个Excel文件
// 解析一个excel文件
try (// 通过输入流,读取excel文件
FileInputStream in = new FileInputStream("D:\\1694318113\\FileRecv\\1627356552686.xlsx");
// 将输入流传入Workbook
Workbook workbook = new XSSFWorkbook(in)) {
// Sheet:工作簿
// 获取工作簿
int sheetNumber = workbook.getNumberOfSheets();
System.out.println("工作薄数量:" + sheetNumber);
// 按照名称获取工作簿
Sheet sheet1 = workbook.getSheet("Sheet0");
// 通过下标方式获取工作簿
Sheet sheet2 = workbook.getSheetAt(1);
System.out.println("工作薄1中的数据行" + sheet1.getLastRowNum());
System.out.println("工作薄2中的数据行" + sheet2.getLastRowNum());
}
我们需要使用IO流,所以推荐将输入流以及创建XSSFWorkbook对象代码块放入try(){}catch{}块中
需要解析什么类型文件创建什么类型的对象
●HSSF - 提供读写Microsoft E