JAVA 使用POI读取文档
前言:工作时总会用到一个Excel工具类来完成对EXCEL的导入和导出,傻瓜式的强大工具类让我潦草地使用API调用,但实际上POI对Excel是如何操作的并不明白,换个项目或者架构就不知道如何用POI读取EXCEL了,又或者复杂的EXCEL表样式不会导出,因此决定学习记录一下。
目录
POI是什么?
使用前提
POI包结构
从Excel文件读取数据
从Excel文件写入数据
正式读写Excel中数据
读取Excel文档(待更新)
POI是什么?
Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。
使用前提
引入POI依赖,其中POI-OOXML是POI的升级版本,提供了XSSF对象,而POI提供操作EXCEL的对象是HSSF。
(因为网上教程有只导入POI依赖的,然后发现不提供XSSFworkbook的对象,所以看了看区别)
HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。
XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>
POI包结构
HSSF提供读写Microsoft Excel XLS格式档案的功能。
XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能。
从Excel文件读取数据
POI API Documentation POI API文档 可参阅
Busy Developers' Guide to HSSF and XSSF Features 快速指南
Poi是如何操作Excel文件的?
Poi封装了XSSFworkbook工作簿对象,也就是如图所示整个excel文档,XSSFSheet工作表对象,也就是下方sheet,一个Excel文档由一个个sheet组成。每一行数据则是Row对象,每个单元格的对象则是Cell对象。
从Excel文档中读取数据的步骤:
- 创建工作簿
- 获取工作表
- 遍历工作表获得行对象
- 遍历行对象获取单元格对象
- 获得单元格中的值
我在本地创建一个简单的excel文档,试着用代码读取,不过用代码读取的时候需要关闭文档,否则会抛出异常:
java.io.FileNotFoundException: C:\Users\Administrator\Documents\test2.xlsx (另一个程序正在使用此文件,进程无法访问。)
/*** @author Claw* @date 2022/1/4 21:13.*/
public class readDemo {public static void main(String[] args) {// 创建工作簿对象XSSFWorkbook xssfWorkbook = null;try {xssfWorkbook = new XSSFWorkbook("C:\\Users\\Administrator\\Documents\\test2.xlsx");// 获取工作表 getSheet 指定sheet名字获取// XSSFSheet sheet = xssfWorkbook.getSheet("sheet1");// 获取工作表 getSheetAt 从第一个sheet获取,一般用这个XSSFSheet sheet = xssfWorkbook.getSheetAt(0);// 获取行for (Row cells : sheet) {// 获取单元格for (Cell cell : cells) {// 获取单元格内容 假设此时单元格内容都是文本格式,用getStringCellValue获取String value = cell.getStringCellValue();System.out.println(value);}}xssfWorkbook.close();} catch (IOException e) {e.printStackTrace();}}
}
简单读取EXCEL文件就完成了:
从Excel文件写入数据
- 创建工作簿
- 创建工作表
- 创建行
- 为单元格赋值
- 通过输出流将对象输出到磁盘
通过Poi对象对Excel写入的例子,我们就能明白,对数据进行EXCEL导出,无非就是创建XSSFWorkbook对象,通过XSSFWorkbook对象创建sheet(),再通过sheet创建row(行),通过row创建cell(单元格)的过程。
public class writeDemo {public static void main(String[] args) {// 创建工作簿XSSFWorkbook workbook = new XSSFWorkbook();// 创建工作表XSSFSheet sheet = workbook.createSheet();// 创建行 第一行XSSFRow row = sheet.createRow(0);// 创建单元格row.createCell(0).setCellValue("puppyCoding");row.createCell(1).setCellValue("studying");row.createCell(2).setCellValue("how to use poi");// 创建行 第二行XSSFRow row2 = sheet.createRow(1);row2.createCell(0).setCellValue("puppyCoding");row2.createCell(1).setCellValue("studying");row2.createCell(2).setCellValue("how to use poi");try {// 输出流FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Administrator\\Documents\\writeDemo1.xlsx");workbook.write(fileOutputStream);fileOutputStream.flush();// 释放资源fileOutputStream.close();workbook.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
正式读写Excel中数据
Excel文档如图所示:
读取Excel文档(待更新)
JAVA 使用POI读取文档相关推荐
- 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题
解决Spring的java项目打包后执行出现"无法读取方案文档..."."原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是..."问题 ...
- poi excel文档生成与读取
阿帕奇poi excel文档操作 1. introduce 2. 轮子 3. demo 以九九乘法表为例 3.1 xls的生成 3.2 xlsx的生成 3.3 读取xlsx 1. introduce ...
- java文档打印_java 如何读取文档中的内容 并打印
java 如何读取文档中的内容 并打印 关注:230 答案:2 信息版本:手机版 电脑版 解决时间 2021-01-25 16:31 提问者非莪莫属 2021-01-25 04:31 java 如 ...
- java无法读取方案文档_解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题...
问题 一个用Spring建的java项目,在Eclipse或idea中运行正常,为什么打包后运行出现如下错误呢? 2019/07/10/19:04:07 WARN [main] org.springf ...
- java利用poi读取excel_java利用POI读取excel文件的方法
摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File; import java.io.FileInputS ...
- Java微信支付API文档测试
Java微信支付API文档测试(注意用的微信开发文档是什么支付) 本人用的刷卡支付( 之前看错了,一直在看扫码支付,心塞 ),如图 首先,做一系列准备,获取appid等等,可以写在一个配置文件里面,如 ...
- 【Java实现导出Word文档功能 XDocReport +FreeMarker】
Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...
- java怎么上传word文档,java上传word文档
用java代码把内容写到Word文档 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- Word处理控件Aspose.Words功能演示:使用 Java 比较 MS Word 文档
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...
最新文章
- 浅谈百度新一代query-ad 推荐引擎如何提升广告收益率
- tpp letter
- CSS3新特性应用之用户体验
- XP+WIN7双系统安装,备份,启动菜单修复
- 【转】聊聊HTTPS和SSL/TLS协议
- python和java选择哪个-观点|Java 与 Python:你应该选择哪个?
- 面向对象(Python):学习笔记之继承
- 天天生鲜项目页面——商品列表页
- 分享:中兴 远航 30 pro root 解锁BL magisk ZTE 7532N 8040N 9041N 刷机 刷面具原厂刷机包 root方法下载
- 有道词典翻译功能数字有时无法翻译出来解决方案
- ASCII码对照表【2022年汇总】
- 在线教育平台edx运营情况数据分析报告——SQLTableau
- itchat实现自动回复好友消息
- YJ智能框架--面向对象方面编程
- QGIS在地图上绘制经纬网
- 大搜车mysql面试题_【大搜车面试|面试题】-看准网
- 图书条形码跟ISBN号互相转换的类(续)
- 红米note5解锁教程_红米Note5解锁bl教程_红米Note5获取解锁码进行一键解锁的方法...
- Minio 图片无法显示的问题
- 加权最小二乘(Weighted Least Squares,WLS)回归及R语言计算