在当今数字化时代,Excel 文档已成为企业、个人和组织管理数据、分析信息及共享报表的重要工具。然而,手动编辑 Excel 文档不仅耗时,还容易出错。幸运的是,通过 Spire.XLS for Java 库,您可以轻松实现这些任务的自动化,从而提高效率并减少错误。
本文将全面指导您如何在 Java 中使用 Spire.XLS 编辑 Excel 文档,帮助您掌握这一强大技能。
安装 Spire.XLS for Java
首先,您需要在 Java 程序中添加 Spire.XLS for Java 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>15.4.0</version>
</dependency>
</dependencies>
Java 读写 Excel 文件
在 Java 中处理 Excel 文件时,最常见的任务之一是读写数据。Spire.XLS for Java 通过 CellRange.getValue() 和 CellRange.setValue() 方法简化了这一流程,使开发者能够轻松获取和设置单个单元格的值。
以下是使用 Java 读写 Excel 文件的步骤:
- 创建一个 Workbook 对象。
- 从指定文件路径加载 Excel 文件。
- 使用 Workbook.getWorksheets().get() 方法访问特定的工作表。
- 通过 Worksheet.getCellRange() 方法获取目标单元格。
- 使用 CellRange.getValue() 读取单元格值,并通过 CellRange.setValue() 更新单元格内容。
- 将工作簿保存为新的 Excel 文件。
- Java
import com.spire.xls.CellRange;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class ReadAndWriteExcel {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取一个特定的单元格
CellRange cell = worksheet.getCellRange("A1");
// 读取单元格的值
String text = cell.getValue();
// 判断单元格的值是否为 "区域"
if (text.equals("Department"))
{
// 更新单元格的值
cell.setValue("地区");
}
// 将工作簿另存为不同的文件
workbook.saveToFile("更新.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}
Java 为 Excel 单元格应用格式
为 Excel 文档应用格式是创建专业报表的关键步骤。CellRange 类提供了一系列 API,可用于管理字体样式、颜色、单元格背景、对齐方式,以及调整行高和列宽。
按照以下步骤为 Excel 单元格应用样式和格式:
- 创建 Workbook 对象。
- 从指定路径加载 Excel 文件。
- 使用 Workbook.getWorksheets().get() 方法访问特定工作表。
- 通过 Worksheet.getAllocatedRange() 方法获取单元格范围。
- 使用 CellRange.getRows()[行索引] 选择特定行,并通过 CellRange 对象下的方法设置单元格背景色、文本颜色、文本对齐方式和行高。
- 使用 CellRange.getColumns()[列索引] 选择特定列,并通过 Column.setColumnWidth() 方法设置列宽。
- 将工作簿另存为新的 Excel 文件。
- Java
import com.spire.xls.*;
import java.awt.*;
public class ApplyFormatting {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取工作表中包含数据的区域
CellRange allocatedRange = worksheet.getAllocatedRange();
// 遍历行
for (int rowNum = 0; rowNum < allocatedRange.getRowCount(); rowNum++) {
if (rowNum == 0) {
// 为表头行应用单元格颜色
allocatedRange.getRows()[rowNum].getStyle().setColor(Color.black);
// 更改表头行的字体颜色
allocatedRange.getRows()[rowNum].getStyle().getFont().setColor(Color.white);
}
// 为其他行应用交替颜色
else if (rowNum % 2 == 1) {
allocatedRange.getRows()[rowNum].getStyle().setColor(Color.lightGray);
} else if (rowNum % 2 == 0) {
allocatedRange.getRows()[rowNum].getStyle().setColor(Color.white);
}
// 文本居中对齐
allocatedRange.getRows()[rowNum].setHorizontalAlignment(HorizontalAlignType.Center);
allocatedRange.getRows()[rowNum].setVerticalAlignment(VerticalAlignType.Center);
// 设置行高
allocatedRange.getRows()[rowNum].setRowHeight(18);
}
// 遍历列
for (int columnNum = 0; columnNum < allocatedRange.getColumnCount(); columnNum++) {
// 设置列宽
if (columnNum > 0) {
allocatedRange.getColumns()[columnNum].setColumnWidth(12);
}
}
// 将工作簿另存为不同的文件
workbook.saveToFile("设置格式.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}
Java 查找和替换 Excel 文本
查找替换功能通过简化数据更新和修正流程,显著提升数据管理效率。借助 Spire.XLS for Java,您可以使用 Worksheet.findString() 方法快速定位包含特定字符串的单元格,并通过 CellRange.setValue() 方法更新其内容。
以下是使用 Java 查找和替换 Excel 文本的详细步骤:
- 实例化 Workbook 对象。
- 从指定路径加载 Excel 文件。
- 通过 Workbook.getWorksheets().get() 获取目标工作表。
- 使用 Worksheet.findString() 定位目标文本所在单元格。
- 调用 CellRange.setValue() 方法更新单元格内容。
- 将工作簿另存为新的 Excel 文件。
- Java
import com.spire.xls.CellRange;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class FindAndReplace {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 定义一个字符串数组用于替换
String[] new_strings = new String[] { "西部厂区", "东部厂区", "北部厂区", "南部厂区", "中部厂区"};
// 定义一个字符串数组,将在 Excel 表中被替换
String[] old_strings = new String[] { "西部", "东部", "北部", "南部", "中部" };
// 遍历旧字符串
for (int i = 0; i < old_strings.length; i++)
{
// 查找包含当前旧字符串的单元格
CellRange cell = worksheet.findString(old_strings[i], false, false);
// 用对应的新字符串替换找到的单元格中的文本
cell.setValue(new_strings[i]);
}
// 将工作簿另存为不同的文件
workbook.saveToFile("替换文本.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}
Java 添加公式和图表到 Excel
除了基本的文件操作外,Spire.XLS for Java 还提供了一系列处理 Excel 文件的高级功能。这些方法可帮助您自动化复杂任务、执行计算并创建动态报表。
以下是使用 Java 在 Excel 中添加公式和创建图表的步骤:
- 创建一个 Workbook 对象。
- 从指定文件路径加载 Excel 文件。
- 使用 Workbook.getWorksheets().get() 方法访问特定工作表。
- 通过 Worksheet.getRange().get() 方法选择目标单元格。
- 使用 CellRange.setFormula() 方法向单元格插入公式。
- 通过 Worksheet.getCharts().add() 方法在工作表中添加柱形图。
- 利用 Chart 对象的方法配置图表的数据范围、位置、标题等属性。
- 将工作簿另存为新的 Excel 文件。
- Java
import com.spire.xls.*;
public class AddFormulaAndChart {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取所有已分配范围
CellRange allocatedRange = worksheet.getAllocatedRange();
// 遍历行
for (int rowNum = 0; rowNum < allocatedRange.getRowCount(); rowNum++) {
if (rowNum == 0) {
// 在单元格 F1 中写入文本
worksheet.getRange().get(rowNum + 1, 6).setText("年度");
// 为单元格应用样式
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().isBold(true);
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setFontName("宋体");
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setSize(12);
worksheet.getRange().get(rowNum + 1, 6).getStyle().setHorizontalAlignment(HorizontalAlignType.Center);
} else {
// 为 F2 到 F6 的单元格添加公式
worksheet.getRange().get(rowNum + 1, 6).setFormula("=SUM(B" + (rowNum + 1) + ":E" + (rowNum + 1) + ")");
// 为单元格应用样式
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setFontName("Times New Roman");
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setSize(12);
worksheet.getRange().get(rowNum + 1, 6).getStyle().setHorizontalAlignment(HorizontalAlignType.Center);
}
}
// 添加一个聚类柱状图
Chart chart = worksheet.getCharts().add(ExcelChartType.ColumnClustered);
// 设置图表的数据范围
chart.setDataRange(worksheet.getCellRange("A1:E6"));
chart.setSeriesDataFromRange(false);
// 设置图表的位置
chart.setLeftColumn(1);
chart.setTopRow(7);
chart.setRightColumn(7);
chart.setBottomRow(18);
// 设置并格式化图表标题
chart.setChartTitle("区域季度生产量");
chart.getChartTitleArea().setSize(13);
chart.getChartTitleArea().isBold(true);
// 将工作簿另存为不同的文件
workbook.saveToFile("添加公式和图表.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}
申请临时 License
如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。