在操作Excel工作表时,想要复制工作表中某个单元格区域,大多数人会选择使用鼠标点击复制粘贴进行手动操作。但其实有一种方式可以实现自动复制,那就是后台调用Java代码。本文就将使用 Free Spire.XLS for Java 免费控件来实现用Java代码复制Excel工作表中指定单元格区域。
- 同一个工作表内复制单元格区域
- 跨工作表复制单元格区域
安装Free Spire.XLS for Java
首先,您需要在 Java 程序中添加Spire.Xls. JAR 文件作为依赖项。您可以从 E-iceblue中文官网 下载 JAR 文件;如果您使用 Maven ,则可以通过在pom.xml文件中添加以下代码导入JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>3.9.1</version>
</dependency>
</dependencies>
同一个工作表内复制单元格区域
Free Spire.XLS for Java提供的 Worksheet. copy (CellRange sourceRange, CellRange destRange, boolean copyStyle) 方法支持将指定单元格区域的数据复制到同一个工作表内的其他指定区域。具体操作步骤如下:
- 创建 Workbook 实例;
- 使用Workbook.loadFrom File ()方法加载Excel示例文档;
- 使用Workbook.getWorksheets().get()方法获取指定工作表;
- 使用Worksheet.getCellRange()方法获取单元格区域;
- 使用Worksheet.copy(CellRange sourceRange, CellRange destRange, boolean copyStyle)方法将数据从源单元格区域复制到目标单元格区域;
- 使用Workbook.saveToFile()方法保存结果文档。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class CopyCellRangeWithinSheet {
public static void main(String[] args) {
//创建Workbook对象
Workbook wb = new Workbook();
//加载一个测试 Excel 文档
wb.loadFromFile("C:\Users\Test1\Desktop\sample.xlsx", ExcelVersion.Version2013);
//获取第一个工作表
Worksheet sheet = wb.getWorksheets().get(0);
//在工作表内复制单元格区域
sheet.copy(sheet.getCellRange("A8:H8"),sheet.getCellRange("A20:H20"),true);
//保存文档
wb.saveToFile("output/CopyRangeWithinSheet.xlsx", ExcelVersion.Version2013);
}
}
跨工作表复制单元格区域
Free Spire.XLS for Java支持用同样的方法来将指定单元格区域中的数据复制到其他工作表的指定位置。以下是实现步骤:
- 创建Workbook实例;
- 使用Workbook.loadFromFile()方法加载Excel示例文档;
- 使用Workbook.getWorksheets().get()方法获取源工作表和目标工作表;
- 使用Worksheet.getCellRange()方法获取源单元格区域和目标单元格区域;
- 使用Worksheet.copy(CellRange sourceRange, CellRange destRange, boolean copyStyle)方法将数据从源单元格区域复制到目标单元格区域;
- 使用IWorksheet接口提供的autoFitColumn()和autoFitRow()方法来设置目标工作表的行高列宽;
- 使用Workbook.saveToFile()方法保存结果文档。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class CopyCellRangeBetweenSheets {
public static void main(String[] args) {
//创建Workbook对象
Workbook wb = new Workbook();
//加载一个测试文档
wb.loadFromFile("C:\Users\Test1\Desktop\sample.xlsx", ExcelVersion.Version2013);
//获取第一个工作表
Worksheet sheet1 = wb.getWorksheets().get(0);
//获取第二个工作表
Worksheet sheet2 = wb.getWorksheets().get(1);
//复制工作表1中的单元格区域到工作表2
sheet1.copy(sheet1.getCellRange("A8:H8"),sheet2.getCellRange("A1:H1"),true);
//在工作表2中设置自适应行高列宽
for (int i = 0; i < 8; i++) {
sheet2.autoFitColumn(i+1);
sheet2.autoFitRow(i+1);
}
//保存文档
wb.saveToFile("output/CopyRangeBetweenSheets.xlsx", ExcelVersion.Version2013);
}
}