POI XSSFSheet shiftRows bug

2020-11-07  本文已影响0人  南岩飞雪

问题

业务中需要往给定格式的excel中写入数据。
使用shiftRows函数往excel中插入新行时,xls文件没问题,xlsx文件问题多多

        InputStream inp = new FileInputStream("/Users/shao/Downloads/模板.xlsx");
        Workbook templateWorkbook = WorkbookFactory.create(inp);
        Sheet sheet = templateWorkBook.getSheetAt(0);
        sheet.shiftRows(5, sheet.getLastRowNum(), 1);
        sheet.shiftRows(5, sheet.getLastRowNum(), 1);
        sheet.shiftRows(5, sheet.getLastRowNum(), 1);
        OutputStream outputStream = new FileOutputStream("/Users/shao/Downloads/模板输出.xlsx");
        templateWorkbook.write(outputStream);

解决

poi 4.1.1版本修复了该bug,升级到最新的4.1.2,问题解决

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.1.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.1.2</version>
            </dependency>

原因

poi bug

参考

https://stackoverflow.com/questions/55980407/apache-poi-shiftrows-corrupts-file-and-deletes-content

http://poi.apache.org/changes.html

image.png
上一篇 下一篇

猜你喜欢

热点阅读