在 Microsoft Excel 中,复制行、列和单元格是日常数据处理中的常见操作。这些功能使用户能够快速复用数据和格式等内容,从而节省时间并减少手动输入错误的风险。在 Java 中,开发者可以利用 Spire.XLS for Java 库轻松实现 Excel 行、列和单元格的复制并保留原有格式。本文将介绍如何使用 Spire.XLS for Java 和 Java 在 Excel 中复制行、列和单元格数据并保留格式。
安装 Spire.XLS for Java
首先,您需要将 Spire.Xls.jar 文件作为依赖项添加到您的 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.1.3</version>
</dependency>
</dependencies>
Java 在 Excel 中复制行
要在 Excel 中复制行并保留格式,你可以使用 Worksheet.copyRow(CellRange sourceRow, Worksheet destSheet, int destRowIndex, EnumSet<CopyRangeOptions> copyOptions) 方法。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.loadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.getWorksheets().get(index) 方法获取源工作表和目标工作表。
- 使用 Worksheet.getRows()[index] 方法获取要复制的行。
- 使用 Worksheet.copyRow(CellRange sourceRow, Worksheet destSheet, int destRowIndex, EnumSet<CopyRangeOptions> copyOptions) 方法复制行及其格式。
- 将源行的列宽复制到目标行中的相应单元格。
- 使用 Workbook.saveToFile() 方法将工作簿保存到文件中。
- Java
import com.spire.xls.*;
import java.util.EnumSet;
public class CopyRows {
public static void main(String[] args) {
// 创建Workbook对象
Workbook workbook = new Workbook();
// 加载Excel文件
workbook.loadFromFile("示例.xlsx");
// 获取源工作表
Worksheet sheet1 = workbook.getWorksheets().get(0);
// 获取目标工作表
Worksheet sheet2 = workbook.getWorksheets().get(1);
// 获取要复制的行
CellRange row = sheet1.getRows()[0];
// 将行从源工作表复制到目标工作表
sheet1.copyRow(row, sheet2, 1, EnumSet.of(CopyRangeOptions.All));
int columns = sheet1.getColumns().length;
// 将源行中单元格的列宽复制到目标行
for (int i = 0; i < columns; i++)
{
double columnWidth = row.getColumns()[i].getColumnWidth();
sheet2.getRows()[0].getColumns()[i].setColumnWidth(columnWidth);
}
// 保存工作簿到文件
workbook.saveToFile("复制行.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}
Java 在 Excel 中复制列
要在 Excel 中复制列并保留格式,可以使用 Worksheet.copyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, EnumSet<CopyRangeOptions> copyOptions) 方法。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.loadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.getWorksheets().get(index) 方法获取源工作表和目标工作表。
- 使用 Worksheet.getColumns()[index] 方法获取要复制的列。
- 使用 Worksheet.copyColumn(CellRange sourceColumn, Worksheet destSheet, int destColIndex, EnumSet<CopyRangeOptions> copyOptions) 方法复制列及其格式。
- 将源列中单元格的行高复制到目标列中的相应单元格。
- 使用 Workbook.saveToFile() 方法保存工作簿。
- Java
import com.spire.xls.*;
import java.util.EnumSet;
public class CopyColumns {
public static void main(String[] args) {
// 创建Workbook对象
Workbook workbook = new Workbook();
// 加载Excel文件
workbook.loadFromFile("示例.xlsx");
// 获取源工作表
Worksheet sheet1 = workbook.getWorksheets().get(0);
// 获取目标工作表
Worksheet sheet2 = workbook.getWorksheets().get(1);
// 获取要复制的列
CellRange column = sheet1.getColumns()[0];
// 将列从源工作表复制到目标工作表
sheet1.copyColumn(column, sheet2, 1, EnumSet.of(CopyRangeOptions.All));
int rows = column.getRows().length;
// 将源列中单元格的行高复制到目标列
for (int i = 0; i < rows; i++)
{
double rowHeight = column.getRows()[i].getRowHeight();
sheet2.getColumns()[0].getRows()[i].setRowHeight(rowHeight);
}
// 保存工作簿到文件
workbook.saveToFile("复制列.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}
Java 在 Excel 中复制单元格
除了复制行和列外,Spire.XLS for Java 还提供了 CellRange.copy(CellRange destRange, EnumSet<CopyRangeOptions> copyOptions) 方法,支持复制特定单元格或单元格区域。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.loadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.getWorksheets().get(index) 方法获取源工作表和目标工作表。
- 使用 Worksheet.getCellRange() 方法获取源单元格区域和目标单元格区域。
- 使用 CellRange.copy(CellRange destRange, EnumSet<CopyRangeOptions> copyOptions) 方法将源单元格区域及其格式复制到目标单元格区域。
- 将源单元格区域的行高和列宽复制到目标单元格区域。
- 使用 Workbook.saveToFile() 方法保存工作簿。
- Java
import com.spire.xls.*;
import java.util.EnumSet;
public class CopyCells {
public static void main(String[] args) {
// 创建Workbook对象
Workbook workbook = new Workbook();
// 加载Excel文件
workbook.loadFromFile("示例.xlsx");
// 获取源工作表
Worksheet sheet1 = workbook.getWorksheets().get(0);
// 获取目标工作表
Worksheet sheet2 = workbook.getWorksheets().get(1);
// 获取源单元格区域
CellRange range1 = sheet1.getCellRange("A1:E7");
// 获取目标单元格区域
CellRange range2 = sheet2.getCellRange("A1:E7");
// 将源单元格区域复制到目标单元格区域
range1.copy(range2, EnumSet.of(CopyRangeOptions.All));
// 将源单元格区域的行高和列宽复制到目标单元格区域
for (int i = 0; i < range1.getRows().length; i++)
{
CellRange row = range1.getRows()[i];
for (int j = 0; j < row.getColumns().length; j++)
{
CellRange column = row.getColumns()[j];
range2.getRows()[i].getColumns()[j].setColumnWidth(column.getColumnWidth());
range2.getRows()[i].setRowHeight(row.getRowHeight());
}
}
// 保存工作簿到文件
workbook.saveToFile("复制单元格.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。