前言:工作时总会用到一个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文档中读取数据的步骤:

  1. 创建工作簿
  2. 获取工作表
  3. 遍历工作表获得行对象
  4. 遍历行对象获取单元格对象
  5. 获得单元格中的值

我在本地创建一个简单的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文件写入数据

  1. 创建工作簿
  2. 创建工作表
  3. 创建行
  4. 为单元格赋值
  5. 通过输出流将对象输出到磁盘

通过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读取文档相关推荐

  1. 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题

    解决Spring的java项目打包后执行出现"无法读取方案文档..."."原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是..."问题 ...

  2. poi excel文档生成与读取

    阿帕奇poi excel文档操作 1. introduce 2. 轮子 3. demo 以九九乘法表为例 3.1 xls的生成 3.2 xlsx的生成 3.3 读取xlsx 1. introduce ...

  3. java文档打印_java 如何读取文档中的内容 并打印

    java 如何读取文档中的内容 并打印 关注:230  答案:2  信息版本:手机版 电脑版 解决时间 2021-01-25 16:31 提问者非莪莫属 2021-01-25 04:31 java 如 ...

  4. java无法读取方案文档_解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题...

    问题 一个用Spring建的java项目,在Eclipse或idea中运行正常,为什么打包后运行出现如下错误呢? 2019/07/10/19:04:07 WARN [main] org.springf ...

  5. java利用poi读取excel_java利用POI读取excel文件的方法

    摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File; import java.io.FileInputS ...

  6. Java微信支付API文档测试

    Java微信支付API文档测试(注意用的微信开发文档是什么支付) 本人用的刷卡支付( 之前看错了,一直在看扫码支付,心塞 ),如图 首先,做一系列准备,获取appid等等,可以写在一个配置文件里面,如 ...

  7. 【Java实现导出Word文档功能 XDocReport +FreeMarker】

    Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...

  8. java怎么上传word文档,java上传word文档

    用java代码把内容写到Word文档 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  9. Word处理控件Aspose.Words功能演示:使用 Java 比较 MS Word 文档

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...

最新文章

  1. 浅谈百度新一代query-ad 推荐引擎如何提升广告收益率
  2. tpp letter
  3. CSS3新特性应用之用户体验
  4. XP+WIN7双系统安装,备份,启动菜单修复
  5. 【转】聊聊HTTPS和SSL/TLS协议
  6. python和java选择哪个-观点|Java 与 Python:你应该选择哪个?
  7. 面向对象(Python):学习笔记之继承
  8. 天天生鲜项目页面——商品列表页
  9. 分享:中兴 远航 30 pro root 解锁BL magisk ZTE 7532N 8040N 9041N 刷机 刷面具原厂刷机包 root方法下载
  10. 有道词典翻译功能数字有时无法翻译出来解决方案
  11. ASCII码对照表【2022年汇总】
  12. 在线教育平台edx运营情况数据分析报告——SQLTableau
  13. itchat实现自动回复好友消息
  14. YJ智能框架--面向对象方面编程
  15. QGIS在地图上绘制经纬网
  16. 大搜车mysql面试题_【大搜车面试|面试题】-看准网
  17. 图书条形码跟ISBN号互相转换的类(续)
  18. 红米note5解锁教程_红米Note5解锁bl教程_红米Note5获取解锁码进行一键解锁的方法...
  19. Minio 图片无法显示的问题
  20. 加权最小二乘(Weighted Least Squares,WLS)回归及R语言计算

热门文章

  1. 我们怎么保证软件开发的质量?
  2. 关于arduino驱动SH1106 OLED屏幕使用U8g2库显示案例
  3. Localization-Aware Active Learning for Object Detection (ACCV)
  4. mysql 重做日志原理_MySQL-重做日志 redo log -原理
  5. activiti学习之pvm篇
  6. Tahoma 字体在网页中应用的问题
  7. 升级Monterey的血泪史~~哭唧唧~~
  8. 剑指Offer(二):替换空格
  9. Matlab中int()函数的使用
  10. SEO静态页面生成系统