我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用 Java 灵活读取 Excel 内容?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用 Java 灵活读取 Excel 内容?

在日常工作和学习中,我们经常需要从 Excel 文件中读取数据。对于少量数据,手动复制和粘贴可能是可行的,但是对于大量的数据,这种方法会变得非常低效。在这种情况下,使用 Java 程序自动读取 Excel 文件中的数据将是更好的选择。

本教程将介绍如何使用 Java 程序读取 Excel 文件中的数据,包括以下几个方面:

  1. 了解 Excel 文件格式
  2. 选择 Java 的 Excel 文件读取库
  3. 读取 Excel 文件中的数据
  4. 处理 Excel 文件中的不同数据类型
  5. 使用 Java 程序导出 Excel 文件

让我们开始吧!


1、了解 Excel 文件格式

在开始编写 Java 程序读取 Excel 文件之前,我们需要了解 Excel 文件格式。Excel 文件是基于 Microsoft 的 OLE2 格式的,这个格式将文件组织成一系列的 "容器" 和 "对象"。Excel 文件的主要容器是 Workbook,它包含一个或多个 Sheet。每个 Sheet 包含一组行和列,这些行和列组成了一个二维的单元格数组。每个单元格可以包含文本、数字、日期、布尔值等不同的数据类型。

2、选择 Java 的 Excel 文件读取库

在 Java 中,有多个库可以用于读取 Excel 文件。这些库包括 Apache POI、JExcelApi、EasyXLS、JXL 等。在本教程中,我们将使用 Apache POI 库。

Apache POI 是一个 Java API,用于操作 Microsoft 文档格式,包括 Word、Excel 和 PowerPoint。它提供了一组 Java 类,可以用于创建、读取和修改 Microsoft 文档。

3、读取 Excel 文件中的数据

在本节中,我们将演示如何使用 Apache POI 库读取 Excel 文件中的数据。

在开始之前,我们需要将 Apache POI 库添加到项目的依赖中。您可以通过 Maven 或 Gradle 等构建工具将它们添加到项目中。

以下是 Maven 项目的 pom.xml 文件中添加 Apache POI 库的示例代码:

    org.apache.poi    poi    4.1.2

以下是 Gradle 项目的 build.gradle 文件中添加 Apache POI 库的示例代码:

dependencies {    implementation 'org.apache.poi:poi:4.1.2'}

接下来,我们将演示如何使用 Apache POI 库读取 Excel 文件中的数据。

首先,我们需要创建一个 Workbook 对象,该对象表示整个 Excel 文件。在 Apache POI 中,Workbook 对象有三种不同的类型:HSSFWorkbook 表示一个 .xls 文件,XSSFWorkbook 表示一个 .xlsx 文件,SXSSFWorkbook 表示一个大型 .xlsx 文件。我们可以使用 WorkbookFactory.create() 方法根据文件的类型创建一个 Workbook 对象。以下是创建一个 XSSFWorkbook 对象的示例代码:

FileInputStream file = new FileInputStream(new File("path/to/excel/file.xlsx"));Workbook workbook = WorkbookFactory.create(file);

接下来,我们可以获取一个 Sheet 对象,该对象表示 Excel 文件中的一个工作表。在 Apache POI 中,Sheet 对象由 Workbook 对象的 getSheet() 方法返回。以下是获取名为 "Sheet1" 的 Sheet 对象的示例代码:

Sheet sheet = workbook.getSheet("Sheet1");

一旦我们获取了 Sheet 对象,我们就可以遍历其中的每一行和每一列,以读取其中的单元格数据。以下是遍历 Sheet 对象中的所有单元格并输出单元格值的示例代码:

Iterator rowIterator = sheet.iterator();while (rowIterator.hasNext()) {    Row row = rowIterator.next();    Iterator cellIterator = row.cellIterator();    while (cellIterator.hasNext()) {        Cell cell = cellIterator.next();        switch (cell.getCellType()) {            case STRING:                System.out.print(cell.getStringCellValue() + "\t");                break;            case NUMERIC:                System.out.print(cell.getNumericCellValue() + "\t");                break;            case BOOLEAN:                System.out.print(cell.getBooleanCellValue() + "\t");                break;            default:                System.out.print("\t");        }    }    System.out.println();}

上述代码中,我们使用了一个嵌套的迭代器来遍历每一行和每一列。在每个单元格中,我们使用 switch 语句根据不同的数据类型执行不同的操作。

4、处理 Excel 文件中的不同数据类型

在 Excel 文件中,单元格可以包含不同的数据类型,包括字符串、数字、日期和布尔值等。当我们读取单元格中的数据时,我们需要知道单元格中的数据类型,以正确地处理它们。

在 Apache POI 中,我们可以使用 Cell.getCellType() 方法获取单元格的数据类型。该方法返回 CellType 枚举类型的值,可以使用 switch 语句根据不同的枚举值执行不同的操作。

以下是使用 switch 语句处理不同数据类型的示例代码:

switch (cell.getCellType()) {    case STRING:        System.out.print(cell.getStringCellValue() + "\t");        break;    case NUMERIC:        if (DateUtil.isCellDateFormatted(cell)) {            System.out.print(cell.getDateCellValue() + "\t");        } else {            System.out.print(cell.getNumericCellValue() + "\t");        }        break;    case BOOLEAN:        System.out.print(cell.getBooleanCellValue() + "\t");        break;    default:        System.out.print("\t");}

在上述示例代码中,我们首先检查单元格的数据类型是否为字符串。如果是字符串,我们使用 getStringCellValue() 方法获取字符串值。如果单元格的数据类型为数字,我们还需要检查单元格是否包含日期。如果是日期,我们使用 getDateCellValue() 方法获取日期值,否则我们使用 getNumericCellValue() 方法获取数字值。

5、使用 Java 程序导出 Excel 文件

除了读取 Excel 文件中的数据外,我们还可以使用 Java 程序创建和导出 Excel 文件。Apache POI 提供了 HSSFWorkbook 和 XSSFWorkbook 两个类,用于创建和操作 Excel 文件。

HSSFWorkbook 类用于操作旧版的 .xls 格式的 Excel 文件,而 XSSFWorkbook 类用于操作新版的 .xlsx 格式的 Excel 文件。我们可以根据需要选择合适的类来创建和导出 Excel 文件。

以下是创建和导出 Excel 文件的一般步骤:

  1. 创建一个 Workbook 对象,表示整个 Excel 文件。
  2. 创建一个 Sheet 对象,表示 Excel 文件中的一个工作表。
  3. 创建 Row 和 Cell 对象,表示 Excel 文件中的行和列。
  4. 为每个单元格设置数据和样式。
  5. 将 Workbook 对象写入文件或输出流中。

下面,让我们来看一些示例代码,演示如何使用 Java 程序创建和导出 Excel 文件。

  1. 创建一个 XSSFWorkbook 对象

以下是创建一个 XSSFWorkbook 对象的示例代码:

Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");
  1. 创建行和单元格

以下是创建行和单元格的示例代码:

Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Hello, World!");
  1. 设置单元格样式

在 Excel 文件中,我们可以为单元格设置不同的样式,包括字体、颜色、对齐方式等。以下是设置单元格样式的示例代码:

CellStyle style = workbook.createCellStyle();Font font = workbook.createFont();font.setBold(true);style.setFont(font);cell.setCellStyle(style);

在上述示例代码中,我们首先使用 createCellStyle() 方法创建一个单元格样式对象。然后,我们使用 createFont() 方法创建一个字体对象,并设置其属性。最后,我们将样式应用于单元格。

  1. 导出 Excel 文件

导出 Excel 文件时,我们可以将 Workbook 对象写入文件或输出流中。以下是将 Workbook 对象写入文件的示例代码:

FileOutputStream fileOut = new FileOutputStream("path/to/excel/file.xlsx");workbook.write(fileOut);fileOut.close();

在上述示例代码中,我们首先使用 FileOutputStream 类创建一个文件输出流对象。然后,我们使用 write() 方法将 Workbook 对象写入文件中。最后,我们关闭文件输出流。

除了写入文件,我们还可以将 Workbook 对象输出到网络流中,以便在浏览器中下载 Excel 文件。以下是将 Workbook 对象输出到网络流中的示例代码:

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setHeader("Content-Disposition", "attachment; filename=\"excel_file.xlsx\"");OutputStream outputStream = response.getOutputStream();workbook.write(outputStream);outputStream.close();

在上述示例代码中,我们首先设置 HTTP 响应的内容类型和文件名。然后,我们使用 getOutputStream() 方法获取网络输出流对象。最后,我们使用 write() 方法将 Workbook 对象写入网络流中,并关闭输出流。

完整示例代码

下面是一个完整的示例代码,演示如何使用 Java 程序读取和导出 Excel 文件:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellType;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.usermodel.Font;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ExcelUtils {    public static void readExcel(String fileName) throws IOException {        // 创建文件输入流        FileInputStream fileInputStream = new FileInputStream(new File(fileName));        // 创建工作簿对象        Workbook workbook = WorkbookFactory.create(fileInputStream);        // 获取第一个工作表        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;                    case BOOLEAN:                        System.out.print(cell.getBooleanCellValue() + "\t");                        break;                    case FORMULA:                        System.out.print(cell.getCellFormula() + "\t");                        break;                    case BLANK:                        System.out.print("\t");                        break;                    default:                        System.out.print("\t");                }            }            System.out.println();        }        // 关闭文件输入流        fileInputStream.close();    }    public static void writeExcel(String fileName) throws IOException {        // 创建工作簿对象        Workbook workbook = new XSSFWorkbook();        Sheet sheet = workbook.createSheet("Sheet1");        // 创建行和单元格        Row row = sheet.createRow(0);        Cell cell = row.createCell(0);        cell.setCellValue("Hello, World!");        // 设置单元格样式        CellStyle style = workbook.createCellStyle();        Font font = workbook.createFont();        font.setBold(true);        style.setFont(font);        cell.setCellStyle(style);        // 导出 Excel 文件        FileOutputStream fileOut = new FileOutputStream(fileName);        workbook.write(fileOut);        fileOut.close();    }}

使用该类,我们可以方便地读取和导出 Excel 文件,如下所示:

public static void main(String[] args) throws IOException {    String fileName = "path/to/excel/file.xlsx";    // 读取 Excel 文件    ExcelUtils.readExcel(fileName);    // 导出 Excel 文件    ExcelUtils.writeExcel(fileName);}

6、结论

本文介绍了如何使用 Java 程序灵活读取和导出 Excel 文件。我们首先介绍了 Apache POI 库,它是 Java 操作 Office 文档的一个强大的工具。然后,我们演示了如何使用 POI 库读取 Excel 文件,并解释了如何根据单元如何设置单元格样式。最后,我们提供了一个完整的示例代码,演示了如何使用 ExcelUtils 类来读取和导出 Excel 文件。

Java 程序读取和导出 Excel 文件是一项非常实用的技能,尤其是在需要处理大量数据的项目中。使用 Apache POI 库,我们可以方便地读取和写入 Excel 文件,这可以大大提高我们的工作效率。

在实际应用中,我们需要根据具体的需求来选择读取和写入 Excel 文件的方法,以达到最好的效果。

参考文献

来源地址:https://blog.csdn.net/bairo007/article/details/131818662

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用 Java 灵活读取 Excel 内容?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#中如何读取Excel内容

C#中如何读取Excel内容,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。(1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活
2023-06-17

如何在 Java 中读取 JSON 文件内容?(java如何读取json文件内容)

在Java编程中,读取JSON文件内容是一项常见的任务。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于前后端数据传输。以下是在Java中读取JSON文件内容的详细步骤:一、导入相关库
如何在 Java 中读取 JSON 文件内容?(java如何读取json文件内容)
Javajson2024-12-17

如何在 Java 中读取 txt 文件内容?(java怎么读取txt文件内容)

在Java编程中,读取txt文件内容是一项常见的任务。以下是详细的步骤来实现这一功能。一、准备工作确保你已经有一个包含要读取内容的txt文件。这个文件可以在项目的资源目录下,或者通过指定完整的文件路径来访问。
如何在 Java 中读取 txt 文件内容?(java怎么读取txt文件内容)
Java2024-12-21

如何用vbs读取index.dat内容

本篇内容介绍了“如何用vbs读取index.dat内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!复制代码 代码如下: +--------
2023-06-08

如何使用ADO.NET Excel读取文件

小编给大家分享一下如何使用ADO.NET Excel读取文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在关系数据库提供的各种对象中(表、视图、存储过程等),E
2023-06-17

java如何读取word文档表格内容

要读取Word文档中的表格内容,可以使用Apache POI库来处理Word文档。以下是一个简单的示例代码,演示如何读取Word文档中的表格内容:```import org.apache.poi.xwpf.usermodel.*;impor
2023-09-22

如何在 Java 中读取 JSON 文件中的内容?(java怎么读取json文件中的内容)

在Java开发中,读取JSON文件中的内容是一项常见的任务。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于阅读和编写,并且与多种编程语言兼容。以下是在Java中读取JSON文件内容的详细步骤:一、
如何在 Java 中读取 JSON 文件中的内容?(java怎么读取json文件中的内容)
Javajson2024-12-23

C语言读取TXT文件内容如何使用

在C语言中,可以使用标准库函数fopen()来打开文件,并使用fscanf()或者fgets()函数来读取文件内容。下面是一个示例代码,演示了如何读取一个名为"example.txt"的文本文件,并将每行的内容打印到屏幕上:#inclu
C语言读取TXT文件内容如何使用
2024-02-29

python如何使用xlrd模块读取excel

这篇文章主要介绍了python如何使用xlrd模块读取excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、安装xlrd模块:1、mac下打开终端输入命令:pip in
2023-06-29

TXT文件的内容如何利用Java实现读取

本篇文章为大家展示了TXT文件的内容如何利用Java实现读取,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java读取txt文件内容。可以作如下理解:首先获得一个文件句柄。File file = n
2023-05-31

深入解析NPOI库:掌握如何在.NET应用中灵活读取和修改Excel文件

NPOI库是一个功能强大、简单易用、跨平台兼容的开源库,适用于处理Microsoft Office格式文件,方便开发人员进行Excel和Word等电子表格和文档的读写和操作。无论是在企业应用、数据处理还是报表生成等领域,NPOI库都提供了一
NPOI开源2024-11-30

Java如何使用jxl读取excel并保存到数据库

小编给大家分享一下Java如何使用jxl读取excel并保存到数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目中涉及到读取excel中的数据,保存到数据库
2023-05-31

Android如何利用ContentProvider读取短信内容

今天就跟大家聊聊有关Android如何利用ContentProvider读取短信内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先,我们来看下运行效果运行效果如下:展示短信内容的
2023-06-25

如何用node写入读取文件内容

本篇内容介绍了“如何用node写入读取文件内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Node.js是一个基于Chrome V8引擎的
2023-07-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录