使用 Java 读取和写入 Excel 文档

发布: (2025年12月30日 GMT+8 13:55)
6 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本内容,我将按照要求保留源链接、格式和代码块,仅翻译正文部分。谢谢!

介绍

在现代软件开发中,管理和操作 Excel 文档是常见需求。无论是数据分析、报告生成,还是管理信息系统,Excel 都发挥着重要作用。本文介绍如何使用 Spire.XLS for Java 库轻松读取和写入 Excel 文档。

Spire.XLS 是一个强大的 Java Excel 组件,支持高效的创建、编辑、读取和转换 Excel 文件。它轻松处理 .xlsx.xls 两种格式,提供全面的 API、快速的性能和良好的文档,帮助开发者更高效地使用电子表格。

Maven 依赖

如果你的项目使用 Maven,请在 pom.xml 中添加以下内容:

<dependency>
    <groupId>com.e-iceblue</groupId>
    <artifactId>e-iceblue</artifactId>
    <version>https://repo.e-iceblue.com/nexus/content/groups/public/</version>
</dependency>

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls</artifactId>
    <version>15.12.15</version>
</dependency>

Maven 将自动下载并为你包含所需的库文件。

从 Excel 文件读取数据

以下示例展示了如何加载已有的 Excel 文件并输出其内容。

import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ReadData {

    public static void main(String[] args) {

        // Create a Workbook object
        Workbook wb = new Workbook();

        // Load an existing Excel file
        wb.loadFromFile("C:/Users/Administrator/Desktop/NewSpreadsheet.xlsx");

        // Get the first worksheet
        Worksheet sheet = wb.getWorksheets().get(0);

        // Get the range of cells with data
        CellRange locatedRange = sheet.getAllocatedRange();

        // Iterate over rows
        for (int i = 0; i < locatedRange.getRows().length; i++) {

            // Iterate over columns
            for (int j = 0; j < locatedRange.getColumnCount(); j++) {

                // Get the data from a specific cell
                System.out.print(locatedRange.get(i + 1, j + 1).getValue() + "  ");
            }
            System.out.println();
        }
    }
}

说明

步骤描述
Workbook 对象创建 Workbook 对象以加载 Excel 文件。
加载文件使用 loadFromFile 打开已有的工作簿。
获取工作表通过 getWorksheets().get(0) 获取第一个工作表。
遍历数据使用嵌套循环遍历每一行和每一列,打印单元格的值。

Source:

创建一个新的 Excel 文件

下面的示例演示了如何创建一个新工作簿、设置基本工作表信息以及写入数据。

import com.spire.xls.*;

public class CreateSpreadsheet {

    public static void main(String[] args) {

        // Create a Workbook object
        Workbook wb = new Workbook();

        // Remove the default worksheet
        wb.getWorksheets().clear();

        // Add a worksheet named "Employees"
        Worksheet sheet = wb.getWorksheets().add("Employees");

        // Merge cells from A1 to G1
        sheet.getRange().get("A1:G1").merge();

        // Write data to A1 and apply formatting
        sheet.getRange().get("A1").setValue("Basic Information of Huayu Auto Company Employees");
        sheet.getRange().get("A1").setHorizontalAlignment(HorizontalAlignType.Center);
        sheet.getRange().get("A1").setVerticalAlignment(VerticalAlignType.Center);
        sheet.getRange().get("A1").getStyle().getFont().isBold(true);
        sheet.getRange().get("A1").getStyle().getFont().setSize(13);

        // Set the height of the first row
        sheet.setRowHeight(1, 30);

        // Create a two‑dimensional array with sample data
        String[][] twoDimensionalArray = new String[][]{
                {"Name", "Gender", "Birth Date", "Education", "Phone Number", "Position", "ID"},
                {"Allen", "Male", "1990-02-10", "Bachelor", "24756854", "Mechanic", "0021"},
                {"Patrick", "Male", "1985-06-08", "Master", "59863247", "Mechanic", "0022"},
                {"Jenna", "Female", "1989-11-25", "Bachelor", "79540352", "Sales", "0023"},
                {"Tommy", "Male", "1988-04-16", "Master", "52014060", "Mechanic", "0024"},
                {"Christina", "Female", "1998-01-21", "Bachelor", "35401489", "HR", "0025"}
        };

        // Import data from the array into the worksheet (starting at row 2, column 1)
        sheet.insertArray(twoDimensionalArray, 2, 1);

        // Set the row height for a range
        sheet.getRange().get("A2:G7").setRowHeight(15);

        // Set column widths
        sheet.setColumnWidth(2, 15);
        sheet.setColumnWidth(3, 21);
        sheet.setColumnWidth(4, 15);

        // Set border styles
        sheet.getRange().get("A2:G7").borderAround(LineStyleType.Medium);
        sheet.getRange().get("A2:G7").borderInside(LineStyleType.Thin);
        sheet.getRange().get("A2:G2").borderAround(LineStyleType.Medium);
        sheet.getRange().get("A2:G7").getBorders().setKnownColor(ExcelColors.Black);

        // Save as a .xlsx file
        wb.saveToFile("output/NewSpreadsheet.xlsx", FileFormat.Version2016);
    }
}

说明

步骤描述
Workbook 对象创建一个新的 Workbook 实例。
移除默认工作表使用 clear() 清除自动创建的工作表。
添加工作表添加一个名为 Employees 的工作表。
合并单元格合并 A1:G1 单元格以创建标题区域。
写入数据与格式化设置标题文本,水平和垂直居中,加粗,并将字体大小设为 13。
插入数组数据将二维 String 数组中的数据写入工作表,从第 2 行第 1 列开始。
设置边框与格式调整行高、列宽,并应用边框样式和颜色。
保存文件使用 Excel 2016 格式将工作簿保存为 output/NewSpreadsheet.xlsx

结论

通过使用 Spire.XLS for Java 库,您可以方便地处理 Excel 文档——无论是读取现有数据还是以编程方式生成新电子表格。该库丰富的 API 和简洁的语法使其成为基于 Java 的 Excel 操作的极佳选择。

结论

全新的电子表格,Spire.XLS 带来了极大的便利。其易于使用的 API 和丰富的功能使 Java 开发者能够轻松实现各种 Excel 操作。希望本文能帮助您快速入门,期待您在实际应用中发掘其潜力。

Back to Blog

相关文章

阅读更多 »

递归的迭代

将简化 HTML 转换为 Markdown 并使用语法树 在我的一个副项目或“宠物”项目中,我编写了一个小型 parser,用于简化 HTML,p...