我有一个带有宏的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工作表?
谢谢
答案 0 :(得分:1)
要修改现有文件,请使用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
。