Java通过Apache POI操作Excel

1、添加依赖

xml 复制代码
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.10.1</version>
        </dependency>

2、读 EXCEL

java 复制代码
	public static void read() throws Exception{
        FileInputStream stream = new FileInputStream("D:\\Test\\file.xlsx");
        // 1.创建工作簿对象,并指定操作的文件
        Workbook workbook = new XSSFWorkbook(stream);
        // 2.获取工作表对象,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
        Sheet sheet = workbook.getSheet("Sheet0");
        // 获取行数(获取当前工作表最后一行的行号,行号从0开始)
        int lastRowNum = sheet.getLastRowNum();
        // 获取列数
        Row row1 = sheet.getRow(0);
        int colNum = row1.getPhysicalNumberOfCells();
        // 3.遍历工作表获得行对象
        for(int i=0; i<=lastRowNum;i++){
            Row row = sheet.getRow(i);
            for (int j = 0; j < colNum; j++) {
                Cell cell = row.getCell(j);
                // 处理数字值
                if (cell.getCellType() == CellType.NUMERIC) {
                    double numericValue = cell.getNumericCellValue();
                    System.out.println(numericValue);
                } else if (cell.getCellType() == CellType.STRING) {
                    // 处理字符串值
                    String stringValue = cell.getStringCellValue();
                    System.out.println(stringValue);
                }
            }
        }
    }

注意:

1、操作的 EXCEL 对象要区分 .xls文件 还是 .xlsx 文件

java 复制代码
   FileInputStream stream = new FileInputStream("D:\\Test\\file.xlsx");
 	// XSSF操作的是Excel2007以上的版本,对应文件的后缀名是xlsx 
   Workbook workbook = new XSSFWorkbook(inputStream)  
 	// HSSF操作的是Excel2003以前的版本,对应的文件后缀名是xls
   Workbook workbook = new HSSFWorkbook(inputStream)

2、读取单元格数据要注意数据格式

读取单元格数据之前,可以先检查该单元格的数据类型。如果它是数字类型,那么你应该读取它的数值值;如果它是文本类型,那么你应该读取它的字符串值。这样可以避免数据类型不匹配的问题。

java 复制代码
 Cell cell = row.getCell(columnIndex);   
  // 处理数字值    } 
 if(cell.getCellType() == CellType.NUMERIC) {
   	double numericValue = cell.getNumericCellValue();
  // 处理字符串值   
 else if (cell.getCellType() == CellType.STRING) {
    String stringValue = cell.getStringCellValue();
  } 

2、写 EXCEL

java 复制代码
    public static void write(Workbook workbook,String path) throws Exception {
        /*创建一个表*/
        Sheet sheet = workbook.createSheet("Sheet1");
        /*创建一行*/
        Row row1 = sheet.createRow(0);
        /*创建一个单元格*/
        Cell cell = row1.createCell(0);
        /*设置单元格的内容*/
        cell.setCellValue("学习的内容");
        cell = row1.createCell(1);
        cell.setCellValue("java操作ecxel");
        Row row2 = sheet.createRow(1);
        cell = row2.createCell(0);
        cell.setCellValue("学习的时间");
        cell = row2.createCell(1);
        cell.setCellValue("2025-03-14 15:35:26");
        FileOutputStream fileOutputStream = new FileOutputStream(path);
        workbook.write(fileOutputStream);
        fileOutputStream.flush();
        fileOutputStream.close();
    }

3、主程序调用

java 复制代码
    public static void main(String[] args) throws Exception {
        Workbook workbook = new XSSFWorkbook();//xlsx
        write(workbook,"D:\\Test\\file.xlsx");
        read();
    }
相关推荐
奇牙coding26 分钟前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
小羊没烦恼!32 分钟前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
Lhappy嘻嘻39 分钟前
读懂 JVM:内存模型、类加载机制、分代回收
java·开发语言·jvm
黄俊懿39 分钟前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
Rain的Java大神之路1 小时前
别再死磕 MySQL 了:向量数据库与 RAG 生产落地实录(Java 工程师专场)
java·后端·面试
七夜zippoe1 小时前
Spring AI 是什么?Java 工程师的 AI 开发第一站
java·人工智能·spring·ai·开发
是真的小外套1 小时前
2023年软考中级信息安全工程师|选择题考点+5道案例分析真题解析(含答案)
java·服务器·网络
会编程的吕洞宾1 小时前
Spring AI 2.0 结构化输出实战:让大模型返回精准 JSON 不再“抽风“,准确率从 78% 拉到 99%
java·后端
项目題供诗1 小时前
ai大模型(三)
java
wangjialelele2 小时前
一文梳理 Spring Cloud 核心组件:Eureka、Nacos、OpenFeign、LoadBalancer 与 Gateway
java·spring boot·spring·spring cloud·微服务·nacos