本文归纳了关于 Java 如何复制 Excel 工作表的方法, 按不同复制需求, 可分为:
1. 复制工作表
1.1 在同一个工作簿内复制工作表
1.2 在不同工作簿间复制工作表
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) | 复制源数据到目标数据范围时,是否复制源数据样式,是否更新引用,是否忽略大小,是否复制形状 |
文中的方法使用了免费 Java Excel 类库 (Free Spire.XLS for Java), 可在官网下载包, 解压后, 将 lib 文件夹中的 jar 文件导入 Java 程序; 或者通过 maven 仓库下载导入 jar,maven 仓库路径配置及依赖添加可以参考教程. 导入效果如下图:
Java 代码示例
[示例 1] 在同一工作簿内复制
- import com.spire.xls.*;
- public class Copy1 {
- public static void main(String[] args) {
- // 加载文档
- Workbook wb = new Workbook();
- wb.loadFromFile("test.xlsx");
- // 获取第一张工作表
- Worksheet sheet0 = wb.getWorksheets().get(0);
- // 获取第三张工作表, 命名, 并将第一张工作表内容复制到该工作表
- Worksheet sheet2 = wb.getWorksheets().get(2);
- sheet2.setName("Copiedsheet");
- sheet2.copyFrom(sheet0);
- // 保存文档
- wb.saveToFile("Copy1.xlsx",FileFormat.Version2013);
- }
- }
复制效果:
[示例 2] 在不同工作簿间复制
- import com.spire.xls.*;
- public class Copy2 {
- public static void main(String[] args) {
- // 加载文档 1, 并获取第一张幻灯片
- Workbook wb1 = new Workbook();
- wb1.loadFromFile("test1.xlsx");
- Worksheet sheet1 = wb1.getWorksheets().get(0);
- // 加载文档 2, 获取第三张幻灯片, 并将文档 1 中的工作表内容复制到该工作表
- Workbook wb2 = new Workbook();
- wb2.loadFromFile("test2.xlsx");
- Worksheet sheet2 = wb2.getWorksheets().get(2);
- sheet2.setName("Copied");
- sheet2.copyFrom(sheet1);
- // 保存文档
- wb2.saveToFile("Copy2.xlsx",FileFormat.Version2013);
- }
- }
复制效果:
[示例 3] 复制单元格数据范围
- import com.spire.xls.*;
- public class CopyRange {
- public static void main(String[] args) {
- // 加载文档
- Workbook wb = new Workbook();
- wb.loadFromFile("test.xlsx");
- // 获取第一个工作表
- Worksheet sheet = wb.getWorksheets().get(0);
- // 复制指定单元格范围中的数据
- CellRange range1 = sheet.getCellRange(8,1,8,7);
- CellRange range2 = sheet.getCellRange(11,1,11,7);
- sheet.copy(range1,range2,true);
- // 保存文档
- wb.saveToFile("CopyRange.xlsx",FileFormat.Version2013);
- }
- }
复制结果:
(本文完)
来源: https://www.cnblogs.com/Yesi/p/12068923.html