Java通过Apache POI操作Excel

server/2025/3/19 8:27:02/

1、添加依赖

        <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以前的版本,对应的文件后缀名是xlsWorkbook 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();//xlsxwrite(workbook,"D:\\Test\\file.xlsx");read();}

http://www.ppmy.cn/server/176193.html

相关文章

深入探索Spring Boot 配置文件:类型、加载顺序与最佳实践

目录 Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 application.properties&#xff08;属性文件&#xff09;1.2 application.yml&#xff08;YAML文件&#xff09; 二、application.properties 和 application.yml 的优缺点分析1. application.properties1.1 优…

人工智能中神经网络是如何进行学习的

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 引言神经网络的学习过程1. 前向传播2. 计算损失3. 反向传播反向传播的步骤 4. 参数更新5. 重…

宜宾数字园区:树莓集团布局的深远意义

树莓集团布局宜宾数字园区&#xff0c;是其深耕数字产业、拓展全国版图的重要一步&#xff0c;具有深远的战略意义。 产业带动效应 宜宾数字园区的建设&#xff0c;有效带动当地数字产业的集聚和发展。通过吸引软件开发、人工智能、大数据等领域的企业入驻&#xff0c;形成较…

在vuejs项目中使用momentjs获取今日、昨日、本周、下周、本月、上月、本季度、上季度、本年、去年等日期

项目场景&#xff1a; 使用了momentjs之后发现这个日期处理控件很强大很方便&#xff0c;参考下面的代码了解详细用法&#xff1a; 官网给出的几种情况(都是当前日期&#xff0c;若指定日期date, moment(date).format()) 使用代码&#xff1a; 项目中日期快捷选择&#xff1a…

《我的Python觉醒之路》之转型Python(十五)——控制流

[今天是2025年3月17日&#xff0c;继续复习第一章节、第二章节的内容 ] 《我的Python觉醒之路》之转型Python&#xff08;十四&#xff09;——控制流

第9章 项目管理概论(一)

9.2 项目基本要素 9.2.1项目基础 项目是为创造独特的产品、服务或成果而进行的临时性工作。 1.独特的产品、服务或成果 可交付成果是指在某一过程、阶段或项目完成时&#xff0c;形成的独特并可验证的产品成果或服务。(可能是有形的&#xff0c;也可能是无形的)。 2.临时性…

基于51单片机的手机拨号键盘模拟proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1rB8GwWyyNnaIP3Kr4d2obw 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C51 是一款常用的 8 位单片机&#xff0c;由 Atmel 公司&#xff08;现已被 Microchip 收…

人形机器人领域的地位与应用前景分析

此博客主要分析科技迅速发展的今天宇树人形机器人突然爆火&#xff0c;普通科技创业者应该如何应对这样的冲击&#xff0c;如何把握这样的机会。 文章当中仅列举部分场景&#xff0c;还有极其多的应用方向等待开发者研究。 1. 宇树科技的行业地位 1.1 公司发展历程与技术优势…