[alibaba/easyexcel]设置了模板的情况下,默认加了一行头,如果在设置头,那样前面就会多出一空行

2024-06-20 6 views
7

public int getNewRowIndexAndStartDoWrite() { // 'getLastRowNum' doesn't matter if it has one or zero,is's zero int newRowIndex = 0; switch (writeLastRowType) { case TEMPLATE_EMPTY: if (parentWriteWorkbookHolder.getExcelType() == ExcelTypeEnum.XLSX) { if (parentWriteWorkbookHolder.getTemplateLastRowMap().containsKey(sheetNo)) { newRowIndex = parentWriteWorkbookHolder.getTemplateLastRowMap().get(sheetNo); } } else { newRowIndex = sheet.getLastRowNum(); }

             newRowIndex++;//这里默认加了一行,导至我加入title后前面总是空一行
            break;
        case HAS_DATA:
            newRowIndex = sheet.getLastRowNum();
            newRowIndex++;
            break;
        default:
            break;
    }
    writeLastRowType = WriteLastRowType.HAS_DATA;
    return newRowIndex;
}

回答

7

请提供代码和模板 。模板是否为空?

8

遇到同样的问题,模板为空,代码 @Test public void testTemplateEasyExcel() { EasyExcel.write("C:\Users\Administrator\Desktop\test2.xlsx", DemoData.class).withTemplate("C:\Users\Administrator\Desktop\test1.xlsx"). sheet("测试").doWrite(data()); }

模板就是新建一个.xlsx文件,什么内容都没有 结果 image

问题原因就是因为作者说的,为模板时,多加了一行

6

模板 结果

代码 @Test public void templateWrite() { String templateFileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; String fileName ="d:/aa.xlsx"; // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 EasyExcel.write(fileName, DemoData.class).withTemplate(templateFileName).sheet().doWrite(data()); }

6

不支持空模板,如果用了模板至少有一行数据。