在日常操作Excel文档时,经常会遇到需要复制工作表的情况,以此来节省时间,提高工作效率。根据复制需求不同,一般我们可将其分为以下两类:
1、 复制工作表(保留原有工作表格式)
- 在同一个文档内复制工作表
- 在不同文档间复制工作表
2、 复制单元格
- 复制指定单元格数据(保留原有单元格格式)
- 复制带有公式的单元格时只保留公式值
同时,对于复制方法copy(),以下是包含了对数据复制的不同应用方法的表格,可供参考:
方法 | 释义 |
---|---|
copyFrom(Worksheet worksheet) | 复制自源工作表的数据 |
copy(CellRange sourceRange, CellRange destRange) | 复制源数据到目标数据范围 |
copy(CellRange sourceRange, CellRange destRange, Boolean copyStyle) | 复制源数据到目标数据范围时,是否复制源数据样式 |
copy(CellRange sourceRange, Worksheet worksheet, int destRow, int destColumn) | 复制源数据到目标工作表中的指定行和列 |
copy(CellRange sourceRange, Worksheet worksheet, int destRow, int destColumn, Boolean copyStyle) | 复制源数据到目标工作表中的指定行和列时,是否复制源数据样式 |
copy(CellRange sourceRange, CellRange destRange, Boolean copyStyle, Boolean updateReference, Boolean ignoreSize) | 复制源数据到目标数据范围时,是否复制源数据样式,是否更新引用,是否忽略大小 |
copy(CellRange sourceRange, Worksheet worksheet, int destRow, int destColumn, boolean copyStyle, boolean undateReference) | 复制源数据到目标工作表中的指定行和列时,是否复制源数据样式,是否更新引用 |
copy(CellRange sourceRange, CellRange destRange, boolean copyStyle, boolean updateReference, boolean ignoreSize, boolean copyShape) | 复制源数据到目标数据范围时,是否复制源数据样式,是否更新引用,是否忽略大小,是否复制形状 |
环境搭建:
方式1:通过官网下载Jar包。解压文档后将lib文件夹下的Spire.Xls.jar导入IDEA中。具体操作步骤参见下图。
方式2:通过maven安装产品及导入相关依赖。详细步骤可参考此教程。
代码示例
1、复制工作表
- 在同一文档内复制工作表
import com.spire.xls.*;
public class CopyWorksheet1 {
public static void main(String[] args) {
//加载文档
Workbook wb = new Workbook();
wb.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");
//获取第一张工作表
Worksheet sheet0 = wb.getWorksheets().get(0);
//获取第二张工作表,命名,并将第一张工作表内容复制到该工作表
Worksheet sheet2 = wb.getWorksheets().get(1);
sheet2.setName("Copiedsheet");
sheet2.copyFrom(sheet0);
//保存文档
wb.saveToFile("output/Copy1.xlsx",FileFormat.Version2013);
}
}
复制效果:
- 在不同文档间复制
import com.spire.xls.*;
public class CopyWorksheet2 {
public static void main(String[] args) {
//加载文档1,并获取第一张幻灯片
Workbook wb1 = new Workbook();
wb1.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");
Worksheet sheet1 = wb1.getWorksheets().get(0);
//加载文档2,获取第二张幻灯片,并将文档1中的工作表内容复制到该工作表
Workbook wb2 = new Workbook();
wb2.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample2.xlsx");
Worksheet sheet2 = wb2.getWorksheets().get(1);
sheet2.setName("Copied");
sheet2.copyFrom(sheet1);
//保存文档
wb2.saveToFile("output/Copy2.xlsx",FileFormat.Version2013);
}
}
复制效果:
2、复制单元格
- 直接复制单元格数据范围
import com.spire.xls.*;
public class CopyCells1 {
public static void main(String[] args) {
//加载文档
Workbook wb = new Workbook();
wb.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");
//获取第一个工作表
Worksheet sheet = wb.getWorksheets().get(0);
//复制指定单元格范围中的数据
CellRange range1 = sheet.getCellRange(11,1,17,3);
CellRange range2 = sheet.getCellRange(20,1,26,3);
sheet.copy(range1,range2,true);
//保存文档
wb.saveToFile("output/CopyCells1.xlsx",FileFormat.Version2013);
}
}
复制效果:
- 复制带公式的单元格时只保留公式值
import com.spire.xls.*;
import java.util.EnumSet;
public class copycell {
public static void main(String[] args) {
//加载Excel工作簿
Workbook wb = new Workbook();
wb.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");
//获取工作表
Worksheet sheet = wb.getWorksheets().get(0);
//设置复制单元格选项为仅复制公式值
CopyRangeOptions copyOptions = CopyRangeOptions.OnlyCopyFormulaValue;
//复制指定单元格到目标单元格
sheet.copy(sheet.getCellRange("F3:F18"), sheet.getCellRange("K3:K18"), EnumSet.of(copyOptions));
//保存文档
wb.saveToFile("output/CopyCellsValue.xlsx",FileFormat.Version2013);
wb.dispose();
}
}
复制效果:
(本文完)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。