尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Java 和 Apache POI 处理 Excel 文件

Java 和 Apache POI 处理 Excel 文件
📅 发布时间:2026/6/19 5:21:09

一、引言

在企业应用中,Excel 是一种常见的数据存储和交换格式。Java 通过 Apache POI 库可以高效地读取、修改和写入 Excel 文件。本文介绍如何使用 Java 处理 Excel 文件,包括读取、写入和修改数据。

二、环境准备
2.1 安装 Java 开发环境

下载并安装 Java SDK:Oracle JDK 下载

验证安装:

java -version

2.2 添加 Maven 依赖

在 pom.xml 中添加 Apache POI 依赖:

org.apache.poipoi-ooxml5.2.3

三、代码实现
3.1 读取 Excel 文件

以下示例代码演示如何读取 Excel 文件的内容:

package com.example;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadExcel {

public static void main(String[] args) {String filePath = "data.xlsx"; // Excel 文件路径try (FileInputStream fis = new FileInputStream(new File(filePath));Workbook workbook = new XSSFWorkbook(fis)) {Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表for (Row row : sheet) {for (Cell cell : row) {switch (cell.getCellType()) {case STRING:System.out.print(cell.getStringCellValue() + "\t");break;case NUMERIC:System.out.print(cell.getNumericCellValue() + "\t");break;default:System.out.print("未知类型\t");}}System.out.println();}} catch (IOException e) {e.printStackTrace();}
}

}

运行结果(示例 Excel 文件):

姓名 年龄 成绩
张三 23 85.5
李四 25 90.2

3.2 写入 Excel 文件

以下示例代码演示如何创建并写入 Excel 文件:

package com.example;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class WriteExcel {

public static void main(String[] args) {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("学生成绩");// 创建表头Row headerRow = sheet.createRow(0);headerRow.createCell(0).setCellValue("姓名");headerRow.createCell(1).setCellValue("年龄");headerRow.createCell(2).setCellValue("成绩");// 添加数据Object[][] data = {{"张三", 23, 85.5},{"李四", 25, 90.2}};int rowNum = 1;for (Object[] rowData : data) {Row row = sheet.createRow(rowNum++);for (int i = 0; i < rowData.length; i++) {if (rowData[i] instanceof String) {row.createCell(i).setCellValue((String) rowData[i]);} else if (rowData[i] instanceof Integer) {row.createCell(i).setCellValue((Integer) rowData[i]);} else if (rowData[i] instanceof Double) {row.createCell(i).setCellValue((Double) rowData[i]);}}}// 保存 Excel 文件try (FileOutputStream fos = new FileOutputStream(new File("output.xlsx"))) {workbook.write(fos);System.out.println("Excel 文件写入成功!");} catch (IOException e) {e.printStackTrace();}try {workbook.close();} catch (IOException e) {e.printStackTrace();}
}

}

运行结果:生成 output.xlsx 文件,包含以下数据:

姓名 年龄 成绩
张三 23 85.5
李四 25 90.2

3.3 修改 Excel 文件

以下示例代码演示如何修改 Excel 文件中的数据:

package com.example;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;

public class ModifyExcel {

public static void main(String[] args) {String filePath = "output.xlsx";try (FileInputStream fis = new FileInputStream(new File(filePath));Workbook workbook = new XSSFWorkbook(fis)) {Sheet sheet = workbook.getSheetAt(0);// 修改第一行第二列的数据Row row = sheet.getRow(1);if (row != null) {Cell cell = row.getCell(2);if (cell != null) {cell.setCellValue(95.0); // 修改成绩}}// 保存修改后的 Excel 文件try (FileOutputStream fos = new FileOutputStream(new File(filePath))) {workbook.write(fos);System.out.println("Excel 文件修改成功!");}} catch (IOException e) {e.printStackTrace();}
}

}

运行结果:output.xlsx 文件中 张三 的成绩被修改为 95.0。

四、优化与扩展

支持 CSV 读取:扩展程序支持 CSV 格式文件的读取和写入。

批量处理数据:支持从数据库读取数据并写入 Excel。

格式化 Excel:使用 Apache POI 提供的 CellStyle 进行单元格格式化,如字体加粗、颜色填充等。

相关新闻

  • 有志青年
  • python舆情分析可视化平台 情感分析 微博 爬虫 scrapy爬虫手艺 朴素贝叶斯分类算法大数据 计算机✅
  • Python thread lambda run multiple functions

最新新闻

  • 杭州GEO优化公司2026年6月Top5:选型疑问与避坑全解 - GEO优化
  • 2026年最新武汉光谷科技职业技术学校联系方式及招生办电话号码 - 武汉中职最新信息发布
  • 揭秘Mac鼠标滚轮终极优化:让外接鼠标拥有触控板般的丝滑体验
  • MC9RS08KA2内部时钟与定时器深度解析:从原理到低功耗设计实战
  • 2026玉林本地人必选防水补漏检测维修公司靠谱服务商TOP5推荐:房屋渗漏水检测维修/卫生间/厨房/天花板/阳台/外墙渗漏水检测补漏维修-暗管漏水检测专业仪器精准定位漏水点 - 即刻修防水
  • PingFangSC字体实战:现代Web开发中的跨平台中文字体终极配置指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号