复制sheet
//读取excel模板
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(filePath + "赎回明细表模板.xlsx"));
workbook.cloneSheet(0,"赎回明细-"+sheetName);
通过 cloneSheet,去克隆整个sheet,cloneSheet第一个参数是你要克隆sheet的下标,第二个参数是,新的sheet的名字,注意这里sheet的名字不能重复,否则会报错。
插入行操作
XSSFSheet sheet = workbook.getSheetAt(0);
sheet.shiftRows(7 + p, sheet.getLastRowNum(), 1);
参数介绍:
startRow:开始行
endRow:末尾行
n:移动n行数startRow到endRow数据域(正数:向下移,负数:向上移)
复制行操作
sheet.copyRows(7, 7 ,7 + p, new CellCopyPolicy());
参数介绍:
srcStartRow:开始行
srcEndRow:末尾行
destStartRow:目标开始行。(假如srcStartRow是1,srcEndRow是3,destStartRow是6,那么就会把1到3行的数据,复制到6,7,8).
CellCopyPolicy:设置格式,是否拷贝原有行的样式,数据,公式。这里我选择默认的,也就是保留行样式,数据,公式。直接new CellCopyPolicy()就行了,当然了,CellCopyPolicy类里面的参数是可以改的。可以查看源码
可以看到默认的构造方法,已经默认的设置参数了,如果拷贝行的时候,想自定义一下,可以通过set方法调用就行,再传进去就行了。
因为最近项目,客户想要按他们提供的模板导出,样式这些,公式,必须保持一模一样,百度了很多,但是都找不到答案,所以写下来记录一下。
听说阿里巴巴开源的easyExcel挺好用的,下次如果有此类需要,时间不紧急的情况,就去研究下。