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());// 保存当前时间到单元格

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值