Java 复制Excel工作表
本文归纳了关于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); } }
复制结果:
(本文完)