Apache POI:如何避免覆盖现有的Excel文件

时间:2017-09-21 10:31:16

标签: java apache-poi

我想使用Apache POI读取现有的xlsx文件,对其进行一些添加并将更改的文件保存到新位置。

但是,我注意到,在保存文件的过程中,POI也会覆盖现有的excel。有没有办法避免这种情况?

以下是我用来打开工作簿的功能:

    public static Workbook openWorkbook(File excelFile) throws ETLException {
        try {
            return WorkbookFactory.create(excelFile);
        } catch (IOException | InvalidFormatException e) {
            ETLInterfaceLogger.getLogger().error("Cannot open Excel file");
            throw new ETLException("Error opening excel file: " + e.getMessage());
        }
    }

这是我用来将更改的文件写入磁盘的函数:

public void writeWorkbook(File outputPath) throws ETLException {
        FileOutputStream stream = null;
        try {
            stream = new FileOutputStream(outputPath);
            workbook.write(stream);
            stream.close();
            workbook.close();
        } catch (IOException e) {
            throw new ETLException("Error writing XLSX to disk: " + e.getMessage());
        } finally {
            if (stream != null)
                try {
                    stream.close();
                } catch (IOException e) {
                    ETLInterfaceLogger.getLogger().error("Cannot close outputstream: " + e.getMessage());
                }
        }
    }

即使在另一个文件上打开FileOutputStream,POI仍会覆盖原始文件以及写入outputPath指定的位置。

有没有办法阻止它这样做?

0 个答案:

没有答案