使用Java修改xlsm文档

时间:2014-07-30 04:58:28

标签: java apache-poi

我有一个带有宏的xlsm Excel文件。文件大小为2M(我想从那里的许多宏中得知)。

我只想写入文件中的1个单元格,并且我正在使用POI接口。这是代码

Workbook wb;
            wb = new XSSFWorkbook(
                OPCPackage.open("test.xlsm")
            );
            Sheet sheet = wb.getSheet("Sheet1");
            Cell c =  sheet.getRow(1).getCell(8);
            System.out.print("Sheet Name " + sheet.getSheetName());
            System.out.print("Cell is " + c.getNumericCellValue());


            c.setCellValue(4);
            FileOutputStream fileOut=new FileOutputStream("test.xlsm");
            wb.write(fileOut);
            fileOut.close();
            System.out.println("done1");

它正确读取值然后它似乎停留在wb.write(fileout),永远不会完成。我究竟做错了什么?有没有办法修改其中包含宏的Excel工作表?

谢谢

1 个答案:

答案 0 :(得分:1)

要修改现有文件,请使用InputStreamOutputStream

    File file = new File("test.xlsm");
    FileInputStream inputStream = new FileInputStream(file);
    OPCPackage.open(inputStream);
    ......
    FileOutputStream fileOut=new FileOutputStream("test.xlsm");
    wb.write(fileOut);
    fileOut.close();

更确定的是,在写文件之前请关闭InputStream