当前位置:网站首页>Apache POI
Apache POI
2022-08-09 07:21:00 【離人歌】
一、POI介绍
Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。
jxl:专门操作Excel
maven坐标:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>
POI结构:
HSSF - 提供读写Microsoft Excel XLS格式档案的功能
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能
HWPF - 提供读写Microsoft Word DOC格式档案的功能
HSLF - 提供读写Microsoft PowerPoint格式档案的功能
HDGF - 提供读Microsoft Visio格式档案的功能
HPBF - 提供读Microsoft Publisher格式档案的功能
HSMF - 提供读Microsoft Outlook格式档案的功能
二、入门案例
2.1 从Excel中读取数据
使用POI可以从一个已经存在的Excel文件中读取数据
//使用POI读取Excel文件中的数据
@Test
public void test1() throws Exception {
//加载指定文件,创建一个Excel对象(工作簿)
XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("E:\\Tencent\\poi.xlsx")));
//读取Excel文件中第一个Sheet标签页
XSSFSheet sheet = excel.getSheetAt(0);
//遍历Sheet标签页来获得每一行数据
for (Row row : sheet) {
//遍历行,来获得每个单元格对象
for (Cell cell : row) {
System.out.println(cell.getStringCellValue());
}
}
//关闭资源
excel.close();
}
通过上面的入门案例可以看到,POI操作Excel表格封装了几个核心对象:
XSSFWorkbook:工作簿
XSSFSheet:工作表
Row:行
Cell:单元格
上面案例是通过遍历工作表获得行,遍历行获得单元格,最终获取单元格中的值。
还有一种方式就是获取工作表最后一个行号,从而根据行号获得行对象,通过行获取最后一个单元格索引,从而根据单元格索引获取每行的一个单元格对象,代码如下:
//使用POI读取Excel文件中的数据
@Test
public void test2() throws Exception {
//加载指定文件,创建一个Excel对象(工作簿)
XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("E:\\Tencent\\poi.xlsx")));
//读取Excel文件中第一个Sheet标签页
XSSFSheet sheet = excel.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();
//获得当前工作表中最后一个行号
for (int i = 0; i <= lastRowNum; i++) {
XSSFRow row = sheet.getRow(i);//根据行号来获取每一行
//获取行最后一个单元格的索引
short lastCellNum = row.getLastCellNum();
for (int j = 0; j < lastCellNum; j++) {
XSSFCell cell = row.getCell(j);//根据单元格索引来获得单元格对象
System.out.println(cell.getStringCellValue());
}
}
//关闭资源
excel.close();
}
2.2 向Excel中写入数据
使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将内存中的Excel文件下载到磁盘
代码如下:
//使用POI向Excel文件写入数据,通过输出流将Excel保存到磁盘上
@Test
public void test3() throws Exception {
//在内存中创建一个Excel文件
XSSFWorkbook excel = new XSSFWorkbook();
//创建一个工作表对象
XSSFSheet sheet = excel.createSheet("工作表");
//在工作表中创建行对象
XSSFRow title = sheet.createRow(0);
//在行中创建单元格对象
title.createCell(0).setCellValue("姓名");
title.createCell(1).setCellValue("地址");
title.createCell(2).setCellValue("年龄");
XSSFRow dataRow = sheet.createRow(1);
dataRow.createCell(0).setCellValue("小明");
dataRow.createCell(1).setCellValue("北京");
dataRow.createCell(2).setCellValue("20");
//创建输出流将内存中的excel文件写道磁盘
FileOutputStream out = new FileOutputStream(new File("E:\\Tencent\\hello.xlsx"));
excel.write(out);
out.flush();
excel.close();
}
}
边栏推荐
- Sklearn data preprocessing
- 排序第四节——归并排序(附有自己的视频讲解)
- 图论,二叉树,dfs,bfs,dp,最短路专题
- 【Oracle 11g】Redhat 6.5 安装 Oracle11g
- 【nuxt】服务器部署步骤
- 生成对抗网络GAN:Generative Adversarial Networks
- 子路由及路由出口配置
- 【ROS2原理8】节点到参与者的重映射
- rsync:recv_generator: mkdir (in backup) failed:Permission denied (13) |failed to set times on '.'
- HDU - 3183 A Magic Lamp 线段树
猜你喜欢
随机推荐
way of thinking problem-solving skills
解决pycharm每次新建项目都要重新pip安装一些第三方库等问题
神经网络优化器
【Oracle 11g】Redhat 6.5 安装 Oracle11g
买口罩(0-1背包)
力扣第 305 场周赛复盘
Flexible and easy-to-use sql monitoring script part7
金九银十即将到来,求职套路多,面试指南我来分享~
Mysql实操
灵活好用的sql monitoring 脚本 part7
ImportError: cannot import name ‘imresize‘
学习小笔记---机器学习
Inception V3 Eye Closure Detection
XxlJobConfig distributed timer task management XxlJob configuration class, replace
list and string conversion
【MySQL】update mysql.user set authentication_string=password(“123456“) where User=‘root‘; 报错
图论,二叉树,dfs,bfs,dp,最短路专题
car-price-deeplearning-0411
长沙学院2022暑假训练赛(一)六级阅读
rsync:recv_generator: mkdir (in backup) failed:Permission denied (13) |failed to set times on '.'