我已经有一个包含宏的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工作表?
谢谢
最佳答案
要修改现有文件,请使用InputStream
和OutputStream
。
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
。