当前位置: 首页 > news >正文

Apache POI

POI介绍  

Apache POI是用Java编写的免费开源的跨平台的Java API,
Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,
其中使用最多的就是使用POI操作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格式档案的功能

入门案例

从Excel文件读取数据

使用POI可以从一个已经存在的Excel文件中读取数据


public class POITest {//使用POI读取Excel中的数据@Testpublic void test1() throws Exception {//加载指定文件,创建一个Excel(工作簿)XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("C:\\poitest.xlsx")));//读取Excel文件中第一个sheet标签项XSSFSheet sheet = excel.getSheetAt(0);//遍历sheet标签项,获取每一行数据for (Row row : sheet) {//遍历行,获取每个单元对象for (Cell cell : row) {System.out.println(cell.getStringCellValue());}}//关闭资源excel.close();}@Testpublic void test2() throws Exception {//加载指定文件,创建一个Excel(工作簿)XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("C:\\poitest.xlsx")));//读取Excel文件中第一个sheet标签项XSSFSheet sheet = excel.getSheetAt(0);//获取当前工作表最后一行的行号,行号从0开始int lastRowNum = sheet.getLastRowNum();for(int i=0;i<=lastRowNum;i++){//根据行号获取行对象XSSFRow row = sheet.getRow(i);//获取当前行的最后一个单元格索引short lastCellNum = row.getLastCellNum();for(short j=0;j<lastCellNum;j++){//根据单元格索引获得单元格对象XSSFCell cell = row.getCell(j);System.out.println(cell.getStringCellValue());}}//关闭资源excel.close();}
}
XSSFWorkbook:工作簿
XSSFSheet:工作表
Row:行
Cell:单元格

向Excel文件写入数据


public class POITest {//使用POI向Excel文件写入数据,并且通过输出流将创建的Excel文件保存到本地磁盘@Testpublic void test3() throws Exception{//在内存中创建一个Excel文件(工作簿)XSSFWorkbook excel = new XSSFWorkbook();//创建一个工作表对象XSSFSheet sheet = excel.createSheet("POI写入数据");//在工作表中创建行对象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 outputStream = new FileOutputStream("C:\\hello1.xlsx");excel.write(outputStream);outputStream.flush();excel.close();}
}
http://www.lryc.cn/news/162546.html

相关文章:

  • 个人能做股票期权吗?个人期权交易开户条件新规
  • Java面试整理(一)
  • 国家信息中心举办“数字政府建设暨数字安全技术”研讨会:海云安提出数字政府软件供应链安全解决方案
  • uniapp 处理 分页请求
  • 最新2米分辨率北极开源DEM数据集(矢量文件)
  • 【计算机网络】HTTP(下)
  • 自学Python03-学会Python中的while循环语句
  • PatchMatchNet 学习笔记 译文 深度学习三维重建
  • 为什么要使用设计模式,以及使用设计模式的好处
  • 【Springcloud】Sentinel熔断和降级
  • javascript实战开发:json数据求指定元素的和算法
  • 娱乐时间 —— 用python将图片转为excel十字绘
  • OJ练习第160题——LRU 缓存
  • 使用 Hugging Face Transformer 创建 BERT 嵌入
  • unity 控制Dropdown的Arrow箭头变化
  • Java开发面试--nacos专区
  • GB28181学习(三)——心跳保活
  • 黑马JVM总结(三)
  • 【数据结构】二叉树基础入门
  • MFC自定义消息的实现方法----(线程向主对话框发送消息)、MFC不能用UpdateData的解决方法
  • Linux单列模式实现线程池
  • 汇川PLC学习Day3:轴控代码编写、用户程序结构说明与任务配置示例、用户变量空间与编址
  • javaee springMVC Map ModelMap ModelAndView el和jstl的使用
  • vue监听表单输入的身份证号自动填充性别和生日
  • 蓝桥杯官网练习题(翻硬币)
  • 企业架构LNMP学习笔记34
  • Python学习之六 循环结构
  • flutter 网络地址URL转file
  • 【JavaEE基础学习打卡07】JDBC之应用分层设计浅尝!
  • Helm Kubernetes Offline Deploy Rancher v2.7.5 Demo (helm 离线部署 rancher 实践)