使用 Java 读取和写入 Excel 文档
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 操作。希望本文能帮助您快速入门,期待您在实际应用中发掘其潜力。