我已经有一个包含宏的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工作表?

谢谢

最佳答案

要修改现有文件,请使用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

10-06 03:46