0
我的代码应该在指定的Excel工作簿中打印一个数字(在本例中为数字5)。如果Excel-Workbook关闭,代码将起作用。但是,如果Excel工作簿是打开的,我运行代码时收到以下错误信息:如果Excel文件打开,Excel文件不能被Java程序访问
Exception in thread "main" java.io.FileNotFoundException: C:\Users\Username\Desktop\java-Programs\test.xlsm (The process can't access the file because it is used by another process)
的代码如下:
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(new File("C:\\Users\\Username\\Desktop\\java-Programs\\test.xlsm")));
XSSFSheet ExcelSheet = wb.getSheet("Output");
XSSFRow row = ExcelSheet.getRow(3);
XSSFCell cell = row.getCell(0);
cell.setCellValue(5);
FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Username\\Desktop\\java-Programs\\test.xlsm");
wb.write(fileOut);
fileOut.close();
我想保持文件打开运行时java代码。有人知道我必须改变什么才能在运行代码时保持Excel文件打开吗?
你希望不要指望在这里。我认为你应该关闭文件。 POI库预计它将被关闭。除非你重写它或选择另一个,否则你会卡住。另外,同步更新呢? Java程序应该如何知道文件打开时所做的任何更改?馊主意。 – duffymo
这是一个Windows限制,与Java或Apache POI无关 – Gagravarr
如果您希望在代码执行时查看Excel中单元格的更新,请使用VBA路径或使用通过Excel的COM端口与Excel交谈的程序。 – IceArdor