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

Apache POI 介绍与使用指南

文章框架

一、Apache POI 概述

  • 定义:Java API操作Microsoft Office格式文件

  • 核心功能:

    • 读写Excel(.xls, .xlsx)

    • 操作Word、PowerPoint等文档

  • 优势:开源免费、跨平台、功能全面

二、环境准备

  1. Maven依赖配置:

            <!-- poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></dependency>

 三、案例代码

          1.Excel写入实战(代码解析)

public static void POITestWrite()throws Exception{//在内存中创建Excel文件XSSFWorkbook excel=new XSSFWorkbook();//在Excel文件创建一个sheet页XSSFSheet sheet=excel.createSheet("sheet1");//在sheet对象页中创建行 从0开始为第一行XSSFRow row1 = sheet.createRow(0);//在行上创建单元格,并写入单元格内容 单元格也是从0开始 所以1是第二个单元格row1.createCell(1).setCellValue("姓名");row1.createCell(2).setCellValue("城市");//创建第二行XSSFRow row2 = sheet.createRow(1);row2.createCell(1).setCellValue("张三");row2.createCell(2).setCellValue("北京");//创建第三行XSSFRow row3 = sheet.createRow(2);row3.createCell(1).setCellValue("李四");row3.createCell(2).setCellValue("湖北");//创建输出流FileOutputStream out = new FileOutputStream(new File("D:\\sheet1.xlsx"));//写入数据excel.write(out);//关闭输出流文件和excel文件excel.close();out.close();}

关键点说明:

  • createRow()/createCell() 创建行列

  • 单元格索引从0开始(A列=0, B列=1)

        2.Excel读取实战(代码解析)

    public static void POITaskRead() throws Exception{FileInputStream in = new FileInputStream(new File("D:\\sheet1.xlsx"));//读取磁盘上的excel文件XSSFWorkbook excel = new XSSFWorkbook(in);//读取excel中第一个sheet页XSSFSheet sheet = excel.getSheetAt(0);//获取sheet中创建最后一行的行号int lastRowNum = sheet.getLastRowNum();//遍历行for (int i=0;i<=lastRowNum;i++){//获取对应行XSSFRow row = sheet.getRow(i);if(row!=null){//获取单元格内容String cellValue1 = row.getCell(1).getStringCellValue();String cellValue2 = row.getCell(2).getStringCellValue();System.out.println(cellValue1+" "+cellValue2);}}//关闭输入流in.close();//关闭excelexcel.close();}

关键点说明:

  • getLastRowNum() 获取最后一行索引

  • 单元格类型处理:getStringCellValue()/getNumericCellValue()

  • 空值处理建议:添加if (row != null)判断

三、应用场景

  • 报表导出

  • 数据批量导入

  • 自动化测试数据生成

  • 财务数据分析

四、总结

  • Apache POI是Java操作Excel的首选方案

  • 提供从基础读写到高级功能的完整API

  • 注意资源管理和异常处理确保稳定性

http://www.dtcms.com/a/293667.html

相关文章:

  • 思路探索:当大型语言模型遇见数据分析的现实挑战
  • 利用中间件实现任务去重与分发精细化:股吧舆情数据采集与分析实战
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-最近七天微博发布量实现
  • java设计模式 -【装饰器模式】
  • C study notes[3]
  • JavaWeb笔记12
  • 硬件基础 -- 信号完整性
  • ESP32-S3学习笔记<4>:I2C的应用
  • 0基础法考随手笔记 02(刑诉法专题04 辩护与代理)
  • 如何用 Kafka + Redis + 线程池搭建高吞吐异步消息处理架构
  • TwoPhaseIterator 两阶段验证
  • Fastdds中的端口号计算
  • 基于 XGBoost 与 SHAP 的医疗自动化办公与可视化系统(下)
  • 在React中,函数式组件和类组件各有优缺点
  • 射频信号(大宽高比)时频图目标检测anchors配置(下)
  • 分布式任务调度实战:XXL-JOB与Elastic-Job深度解析
  • ZKmall开源商城微服务架构实战:Java 商城系统的模块化拆分与通信之道
  • 【音视频学习】五、深入解析视频技术中的像素格式:颜色空间、位深度、存储布局
  • TR-FRET(时间分辨荧光能量共振转移)在药物研发中的热门应用简介
  • 【解决vmware ubuntu不小心删boot分区,进不去系统】
  • 在 Ubuntu 上将 Docker 降级到版本 25.0.5 (二) 降低版本,涉及兼容性问题
  • 在离线 Ubuntu 22.04机器上运行 ddkj_portainer-cn 镜像 其他相关操作也可以复刻 docker
  • centos 配置docker
  • java通过com进行pdf转换docx丢失
  • mongodb的备份和还原(精简)
  • LeetCode11~20题解
  • Visual Studio中部署PaddleOCRv5 (借助ncnn框架)
  • 如何Visual Studio 的配置从 Qt-Debug 切换到 x64-Debug
  • ESP32的ADF详解:5. Streams的API
  • 聊聊 Flutter 在 iOS 真机 Debug 运行出现 Timed out *** to update 的问题