乐趣区

关于java:Java-复制Excel工作表

在日常操作 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();}
}

复制成果:

(本文完)

退出移动版