使用poi根据Excel模板填充数据
遇到的问题(模板文件会被修改 类似有缓存)
-
通过 File方式创建Workbook时源模板文件会被修改,Workbook中会残留之前的数据,但模板文件 xls中并不会体现
File excelFile = GetLocalFileUtil.getFile("temp.xlsx", "fileTemp"); //通过file创建 XSSFWorkbook workbook = XSSFWorkbookFactory.createWorkbook(excelFile)
解决方案
使用流创建WorkbookFile excelFile = GetLocalFileUtil.getFile("temp.xlsx", "fileTemp"); //通过流创建workbook XSSFWorkbook workbook = XSSFWorkbookFactory.createWorkbook(new FileInputStream(excelFile)); //=======================2007之下版本===========================// POIFSFileSystem poifsFileSystem = new POIFSFileSystem(excelFile); Workbook workbook = WorkbookFactory.create(poifsFileSystem);
模板样例
完整代码 只针对xssf
public void generatorFile(String username, List<DataBean> dataBean){
File excelFile = GetLocalFileUtil.getFile("temp.xlsx", "fileTemp");
XSSFWorkbook workbook = null;
FileOutputStream fileOutputStream = null;
try {
workbook = XSSFWorkbookFactory.createWorkbook(new FileInputStream(excelFile));
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setWrapText(true);
Sheet sheet = workb