在日常操作Excel文档时,经常会遇到需要复制工作表的情况,以此来节省时间,提高工作效率。根据复制需求不同,一般我们可将其分为以下两类:
1、 复制工作表(保留原有工作表格式)
- 在同一个文档内复制工作表
- 在不同文档间复制工作表
2、 复制单元格
- 复制指定单元格数据(保留原有单元格格式)
- 复制带有公式的单元格时只保留公式值
同时,对于复制方法copy(),以下是包含了对数据复制的不同应用方法的表格,可供参考:
![b6de82b36599d1fd8eb3f32b5848be90.png](https://i-blog.csdnimg.cn/blog_migrate/b4d6e4f9635f4597a030d1b02650e28b.jpeg)
![258029b5b257133c34bc011594c982d4.png](https://i-blog.csdnimg.cn/blog_migrate/472792918254605b8d326eb454f1e9c1.jpeg)
环境搭建:
方式 1:通过E-iceblue中文官网下载Jar包。解压文档后将lib文件夹下的Spire.Xls.jar导入IDEA中。具体操作步骤参见下图。
![b3af42718695a174fe48b0641056fcfc.png](https://i-blog.csdnimg.cn/blog_migrate/6bae7d3931982bbd73e4c49df49edc83.jpeg)
方式 2:通过maven安装产品及导入相关依赖。
代码示例
1、复制工作表
- 在同一文档内复制工作表
import com.spire.xls.*;public class CopyWorksheet1 { public static void main(String[] args) { //加载文档 Workbook wb = new Workbook(); wb.loadFromFile("C:甥敳獲Test1DesktopSample.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); }}
复制效果:
![f81c5aa58e004d30b8c70b34744a2f81.png](https://i-blog.csdnimg.cn/blog_migrate/fd2ff8857151976fa7760cbe5f1a8a19.jpeg)
- 在不同文档间复制
import com.spire.xls.*;public class CopyWorksheet2 { public static void main(String[] args) { //加载文档1,并获取第一张幻灯片 Workbook wb1 = new Workbook(); wb1.loadFromFile("C:甥敳獲Test1DesktopSample.xlsx"); Worksheet sheet1 = wb1.getWorksheets().get(0); //加载文档2,获取第二张幻灯片,并将文档1中的工作表内容复制到该工作表 Workbook wb2 = new Workbook(); wb2.loadFromFile("C:甥敳獲Test1DesktopSample2.xlsx"); Worksheet sheet2 = wb2.getWorksheets().get(1); sheet2.setName("Copied"); sheet2.copyFrom(sheet1); //保存文档 wb2.saveToFile("output/Copy2.xlsx",FileFormat.Version2013); }}
复制效果:
![7e0c7b58ac23749dbc3f9597650d7d8c.png](https://i-blog.csdnimg.cn/blog_migrate/3162a18b52846cddc977ee2ae8240c92.jpeg)
2、复制单元格
- 直接复制单元格数据范围
import com.spire.xls.*;public class CopyCells1 { public static void main(String[] args) { //加载文档 Workbook wb = new Workbook(); wb.loadFromFile("C:甥敳獲Test1DesktopSample.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); }}
复制效果:
![47c80682e4d492843bd638452c671d7e.png](https://i-blog.csdnimg.cn/blog_migrate/7724651b4947396c98a06232fa787ec9.jpeg)
- 复制带公式的单元格时只保留公式值
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:甥敳獲Test1DesktopSample.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(); }}
复制效果:
![bd23e772c909ff2c2066a71615ebf5f0.png](https://i-blog.csdnimg.cn/blog_migrate/6bfaa103c583ed40c601503cb2d1ceb9.jpeg)
(本文完)