我使用< code > Workbook factory . create(new File(" path/to/xlsx "))构造了一个新的工作簿。但是,当我启动应用程序后尝试在Excel中编辑该文件时,我收到一条错误消息,提示该文件正在使用中。我需要释放文件吗?如果需要,如何释放?(我在api文档中找不到任何类似< code>Workbook.close()的内容)或者我必须在其他地方寻找吗?
我不知道还能去哪里找;该应用程序不会导致csv和excel文件的这些问题,我只需调用转换器(xls =
(我用的是POI 3.8)
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
try{
File workbookFile = new File("C:\\repo\\yourfile.xslx");
FileInputStream file = new FileInputStream(workbookFile);
Workbook wb = WorkbookFactory.create(file);
Sheet sheet = wb.getSheetAt(0);
//use the instance of wb.
file.close();
}
catch(Exception e){
System.out.println("Fail");
}
如果您需要完全控制资源何时关闭,您应该在前面自己创建OPCPackage,并将其传递给WorkbookFactory。OPCPackage提供了您想要的关闭方法。工作簿将保持打开状态,直到垃圾回收机制
您的代码将类似于:
File f = new File("/path/to/excel/file");
Workbook wb = null;
NPOIFSFileSystem npoifs = null;
OPCPackage pkg = null;
try {
npoifs = new NPOIFSFileSystem(f);
wb = WorkbookFactory.create(npoifs);
} catch(OfficeXmlFileException ofe) {
pkg = OPCPackage.open(f);
wb = WorkbookFactory.create(pkg);
}
// Use it
if (npoifs != null) { npoifs.close(); }
if (pkg != null) { pkg.close(); }
在传递给< code > Workbook factory . create()的InputStream上维护一个句柄,并在使用完工作簿后简单地关闭InputStream,似乎就可以了。例如:
InputStream is = // initialize
try {
Workbook wb = WorkbookFactory.create(is);
// use the workbook
} finally {
if (is != null) is.close()
}
函数名称:关闭文件句柄 函数功能:关闭文件句柄 函数方法 io.close() 函数用例 file,msg = io.open("/mnt/sdcard/kazhu.txt") if file then dialog("打开成功",5000) file:close() else dialog("打开失败,失败原因:"..msg,5000) end
问题内容: 我正在使用JAI读取Java中的Tiff文件。使用此代码: 在使用Java 7的一个盒子上工作正常,但在使用Java 8的其他盒子上工作正常,请执行以下操作: 问题答案: 我的理论是,垃圾回收正在启动并完成一些本不该垃圾回收的工作。很奇怪。替换为: 问题似乎消失了。我的猜测是因为不会过早收集,因为它的句柄仍在局部变量范围内。可能还有其他JAI方法也可以做到这一点,只要确保在输入流上保留
问题内容: 我想使用posix_spawn(…)(或非常相似的东西)生成一个进程集合。此函数接受posix_spawn_file_actions_t类型的参数,该参数允许我指定应如何对待打开的文件句柄。从文档中可以确定,所有文件都是从调用进程继承的,并根据posix_spawn_file_actions_t结构中的信息进行了修改。 我希望所有文件都不会被生成的进程打开(stdin,stdout和s
我想在Sheet1之后将所有工作表从特定工作簿复制到当前工作簿 此代码正在复制所有工作表,包括隐藏的工作表。如何只复制可见的工作表?
问题内容: 我希望能够使用Python读取Excel文件,在读取完成后保持Python脚本运行,并执行其他操作,同时能够在另一个进程中编辑Excel文件。我正在使用python 2.7和openpyxl。 当前看起来像: 运行函数后,即使我不想再使用Python读取Excel文件,它仍然被锁定以供其他进程访问(它给出错误“当前正在使用’‘文件名’。请稍后再试”。) 如何从脚本关闭文件?我尝试了OE
问题内容: 我正在开发一个巨大的旧版Java应用程序,其中包含许多手写内容,如今您可以让一个框架来处理。 我现在面临的问题是,我们的Solaris Server上的文件句柄用尽了。我想知道跟踪打开文件句柄的最佳方法是什么?在哪里查看,什么会导致打开的文件句柄用尽? 我不能在Solaris下调试应用程序,只能在Windows开发环境上调试。分析Windows下的打开文件句柄是否甚至合理? 问题答案:
对于来自Android应用程序的所有网络流量,我们都使用retrofit/okhttp3。到目前为止,一切似乎都进行得相当顺利。 然而,我们现在偶尔会出现应用程序/进程用完文件句柄的情况。 null null 如何防止OkHttp创建太多的文件句柄?
这里的术语“工作簿”表示Microsoft Excel文件。 完成本章后,您将能够使用Java程序创建新的工作簿并打开现有的工作簿。 创建空白工作簿 以下简单程序用于创建空白Microsoft Excel工作簿。 import java.io.*; import org.apache.poi.xssf.usermodel.*; public class CreateWorkBook { pu