我的代码应该将数字(在本例中为数字 5)打印到指定 Excel 工作簿中的指定单元格。如果 Excel 工作簿关闭,该代码将起作用。但是,如果 Excel 工作簿已打开,我在运行代码时会收到以下错误消息:
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 文件打开?
最佳答案
Microsoft Excel 对已打开的文件设置独占锁定。
因此,如果您在 Excel 中打开该文件时尝试在任何其他应用程序中写入该文件,则在 Windows 上将会失败。
当您需要写入文件时,可能没有其他解决方案可以关闭 Excel。
关于java - 如果 Excel 文件打开,则 Java 程序无法访问 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417640/