栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Java中Excel文件解析(POI简介及基本使用)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中Excel文件解析(POI简介及基本使用)

什么是POI

在Java技术生态圈中,可以进行Excel文件处理的主流技术包括: Apache POI 、 JXL 、 Alibaba EasyExcel 等。

其中各个技术都有最适合的场景

Apache POI 基于 DOM 方式进行解析,将文件直接加载内存,所以速度较快,适合 Excel 文件数据量不大的应用场景。

JXL 只支持Excel 2003以下版本,所以不太常见。

Alibaba EasyExcel 采用逐行读取的解析模式,将每一行的解析结果以观察者的模式通知处理(AnalysisEventListener),所以比较适合数据体量较大的 Excel 文件解析。

本文我们使用POI作为处理Excel文件的技术。

POI适用场景

Apache POI 提供给 Java 程序对 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行数据,所以目前已经不常用。所以目前主要采用 XSSF 进行新版本(*.xlsx)Exce文件的解析。

WorkBook(Excel文件的解析)

如何写入Excel文件,特别的是。文件由字节流输入,所以当使用结束时需要close()关闭。

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);
创建Sheet工作簿

// 按照自定义名称创建工作簿
Sheet sheet2 = workbook.createSheet("自定义工作簿2");
创建数据行

通过Sheet工作簿来进行数据行Row的获取或者创建。

Row row = sheet.createRow(0);//创建数据行

int first = sheet.getFirstRowNum();//获取首行下标

int last = sheet.getLastRowNum();//获取尾行下标

Row row = sheet.getRow(0);//根据下标获取行

创建单元格

通过Row数据行进行Cell单元格获取或者创建。

Cell cell0 = row.createCell(0);//根据下标创建单元格

Cell cell = row.getCell(1); //根据下标获取单元格

设置单元格 格式

            DataFormat dateFormat = wbk.createDataFormat();
			Short formatCode = dateFormat.getFormat("yyyy-MM-dd HH:mm:ss");
			System.out.println("单元格式编码为"+formatCode);
			CellStyle cellStyle =wbk.createCellStyle();//创建单元格格式
			cellStyle.setDataFormat(formatCode);

            cell04.setCellValue("创建日期");
            cells04.setCellStyle(cellStyle); //设置单元格格式
			cells04.setCellValue(new Date());// 保存当前时间到单元格

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023426.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号