java - 如果 Excel 文件打开,则 Java 程序无法访问 Excel 文件

标签 java excel apache-poi fileoutputstream xssf

我的代码应该将数字(在本例中为数字 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/

相关文章:

java - DOCX4J:在 JEditorPane 中查看 HTML 导出的文档文件

java - 将字符串或整数数组转换为逗号分隔的整数或条件中的 sql 字符串

arrays - VBA - 在多维数组中分割 CSV 文件

java - 获取错误为 "org.apache.poi.hssf.usermodel.HSSFRow cannot be cast to org.apache.poi.ss.usermodel.Row"

java - Java 中查询 Excel 工作表以获取数据子集

java - poi HSSFCell setCellFormula 中的公式有什么问题?

java - protected "stub"方法仅用于覆盖目的是否被视为良好做法?

java - 如何在java正则表达式中提取整个匹配组

vba - 设置 xWorkb = 新工作簿不工作,ActiveX 错误

excel - 字符串值的总和