什么是POI
在Java技術(shù)生態(tài)圈中,可以進行Excel文件處理的主流技術(shù)包括: Apache POI 、 JXL 、 Alibaba EasyExcel 等。
其中各個技術(shù)都有最適合的場景
Apache POI 基于 DOM 方式進行解析,將文件直接加載內(nèi)存,所以速度較快,適合 Excel 文件數(shù)據(jù)量不大的應(yīng)用場景。
JXL 只支持Excel 2003以下版本,所以不太常見。
Alibaba EasyExcel 采用逐行讀取的解析模式,將每一行的解析結(jié)果以觀察者的模式通知處理(AnalysisEventListener),所以比較適合數(shù)據(jù)體量較大的 Excel 文件解析。
本文我們使用POI作為處理Excel文件的技術(shù)。
POI適用場景
Apache POI 提供給 Java 程序?qū)?Microsoft Office 格式檔案進行讀寫功能的 API 開源類庫。 它分別提供對不同格式文件的解析:
HSSF | 提供讀寫Microsoft Excel格式檔案的功能。 |
XSSF | 提供讀寫Microsoft Excel OOXML格式檔案的功能。 |
HWPF | 提供讀寫Microsoft Word格式檔案的功能。 |
HSLF | 提供讀寫Microsoft PowerPoint格式檔案的功能。 |
HDGF | 提供讀寫Microsoft Visio格式檔案的功能。 |
特別的是當我們解析Excel文件時:
HSSF 用于解析舊版本(*.xls)Excel文件,由于舊版本的Excel文件只能存在65535行數(shù)據(jù),所以目前已經(jīng)不常用。所以目前主要采用 XSSF 進行新版本(*.xlsx)Exce文件的解析。
WorkBook(Excel文件的解析)
如何寫入Excel文件,特別的是。文件由字節(jié)流輸入,所以當使用結(jié)束時需要close()關(guān)閉。
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fos = new FileOutputStream("c:\\test\\temp.xlsx")) {
workbook.write(fos);
} catch (IOException e) {
e.printStackTrace();
}
當解析Excel文件時需要這樣寫
// 輸入流
FileInputStream fis = new FileInputStream("c:\\test\\1627356554991.xlsx");
// Excel文件對象
Workbook workbook = new XSSFWorkbook(fis);
創(chuàng)建Sheet工作簿
// 按照自定義名稱創(chuàng)建工作簿
Sheet sheet2 = workbook.createSheet("自定義工作簿2");
創(chuàng)建數(shù)據(jù)行
通過Sheet工作簿來進行數(shù)據(jù)行Row的獲取或者創(chuàng)建。
Row row = sheet.createRow(0);//創(chuàng)建數(shù)據(jù)行
int first = sheet.getFirstRowNum();//獲取首行下標
int last = sheet.getLastRowNum();//獲取尾行下標
Row row = sheet.getRow(0);//根據(jù)下標獲取行
創(chuàng)建單元格
通過Row數(shù)據(jù)行進行Cell單元格獲取或者創(chuàng)建。文章來源:http://www.zghlxwxcb.cn/news/detail-480106.html
Cell cell0 = row.createCell(0);//根據(jù)下標創(chuàng)建單元格
Cell cell = row.getCell(1); //根據(jù)下標獲取單元格
設(shè)置單元格 格式文章來源地址http://www.zghlxwxcb.cn/news/detail-480106.html
DataFormat dateFormat = wbk.createDataFormat();
Short formatCode = dateFormat.getFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("單元格式編碼為"+formatCode);
CellStyle cellStyle =wbk.createCellStyle();//創(chuàng)建單元格格式
cellStyle.setDataFormat(formatCode);
cell04.setCellValue("創(chuàng)建日期");
cells04.setCellStyle(cellStyle); //設(shè)置單元格格式
cells04.setCellValue(new Date());// 保存當前時間到單元格
到了這里,關(guān)于Java中Excel文件解析(POI簡介及基本使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!