2023-06-30 10:04:07.817|1402|ERROR|[nio-8080-exec-1]|[TID: N/A]| c.a.p.f.i.ResponseExceptionHandler |系统异常
java.lang.IllegalArgumentException: Attempting to write a row[0] in the range [0,1901] that is already written to disk.
org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:131)
org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:65)
com.alibaba.excel.util.WorkBookUtil.createRow(WorkBookUtil.java:88)
com.alibaba.excel.context.WriteContextImpl.initHead(WriteContextImpl.java:245)
com.alibaba.excel.context.WriteContextImpl.initSheet(WriteContextImpl.java:209)
com.alibaba.excel.context.WriteContextImpl.currentSheet(WriteContextImpl.java:135)
com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:54)
com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:73)
com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:50)
2023-06-30 10:04:07.817|1402|ERROR|[nio-8080-exec-1]|[TID: N/A]| c.a.p.f.i.ResponseExceptionHandler |系统异常 java.lang.IllegalArgumentException: Attempting to write a row[0] in the range [0,1901] that is already written to disk. org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:131) org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:65) com.alibaba.excel.util.WorkBookUtil.createRow(WorkBookUtil.java:88) com.alibaba.excel.context.WriteContextImpl.initHead(WriteContextImpl.java:245) com.alibaba.excel.context.WriteContextImpl.initSheet(WriteContextImpl.java:209) com.alibaba.excel.context.WriteContextImpl.currentSheet(WriteContextImpl.java:135) com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:54) com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:73) com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:50)
代码 : WriteSheet writeSheet = EasyExcel.writerSheet(sheetName) .head(ProductExcelDataConvert.buildHeader(excelExportModel)) .registerWriteHandler(new ProductImportTemplateCellHandler(excelExportModel)) .registerWriteHandler(new ProductImportTemplateSheetHandler(excelExportModel)) .registerWriteHandler(new ProductImportTemplateFormulaHandler(excelExportModel,sheetName)) .build(); excelWriter.write(Lists.newArrayList(), writeSheet);
ProductImportTemplateFormulaHandler :
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { Sheet sheet = writeSheetHolder.getSheet(); if (sheet.getSheetName().equals(sheetName)){ setFormula(sheet); }
ProductImportTemplateSheetHandler:
// setFormula(sheet, styleNoIndex, merStyleNoIndex, mainPropertyNum,i+1); } sheet.setForceFormulaRecalculation(true);
private void setDataValidation(char offset, Sheet sheet, int rowNum, int colNum) { DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper(); String validationFormula1 = "INDIRECT($" + offset + (rowNum) + ")"; // String validationFormula2 = "INDIRECT($" + (char) (offset + 1) + (rowNum) + ")"; DataValidation dataValidation1 = getDataValidationByFormula(validationFormula1, rowNum, colNum, dataValidationHelper); // DataValidation dataValidation2 = getDataValidationByFormula(validationFormula2, rowNum, colNum + 1, dataValidationHelper); sheet.addValidationData(dataValidation1); // sheet.addValidationData(dataValidation2); }