Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OPCPackage中的open函数和create函数有什么区别_Java_Apache Poi - Fatal编程技术网

Java OPCPackage中的open函数和create函数有什么区别

Java OPCPackage中的open函数和create函数有什么区别,java,apache-poi,Java,Apache Poi,我试图写一个函数,可以创建一个excel文件,如果不存在。如果存在,则应在末尾追加内容。文件可能会变大,所以我想使用OPCPackage。以下是代码片段: String basePath = "/home/aman/Desktop"; String fileName = "result.xls"; File file = new File(basePath, fileName); OPCPackage pkg = OPCPackage.openOrCreate(file); Workbook w

我试图写一个函数,可以创建一个excel文件,如果不存在。如果存在,则应在末尾追加内容。文件可能会变大,所以我想使用OPCPackage。以下是代码片段:

String basePath = "/home/aman/Desktop";
String fileName = "result.xls";
File file = new File(basePath, fileName);
OPCPackage pkg = OPCPackage.openOrCreate(file);
Workbook wb = new XSSFWorkbook(pkg);

我没有使用
openOrCreate
而是尝试了
create()
函数,但错误依然存在。所以这让我怀疑我是否理解这个包的open和create功能。出现错误信息的问题。

您混淆了OOXML包和OOXML文件格式之间的区别。
.xlsx
文件构建在OOXML包结构之上,但空的OOXML包不是xlsx文件

打个比方,想想看一本装在书包里的书。你说的是“拿着书包,然后打开它,拿出书”或者“拿一个全新的空袋子,打开它,拿出书,哦,不,没有书……”

您可能想做的更像:

Workbook wb;
File f = new File("test.xlsx");

if (f.exists) {
   // Existing workbook, open
   OPCPackage pkg = OPCPackage.open(f);
   wb = new XSSFWorkbook(pkg);
} else {
   // Need to create a new, empty workbook
   wb = new XSSFWorkbook();
}

调用
新XSSFWorkbook()创建一个全新的空工作簿来填充。调用
OPCPackage.create()
会创建一个新的空OPC/OOXML包,其中没有任何内容,然后需要手动使用空的XLSX或DOCX结构(通常您可能不想这样做!)

您混淆了OOXML包和OOXML文件格式之间的区别。
.xlsx
文件构建在OOXML包结构之上,但空的OOXML包不是xlsx文件

打个比方,想想看一本装在书包里的书。你说的是“拿着书包,然后打开它,拿出书”或者“拿一个全新的空袋子,打开它,拿出书,哦,不,没有书……”

您可能想做的更像:

Workbook wb;
File f = new File("test.xlsx");

if (f.exists) {
   // Existing workbook, open
   OPCPackage pkg = OPCPackage.open(f);
   wb = new XSSFWorkbook(pkg);
} else {
   // Need to create a new, empty workbook
   wb = new XSSFWorkbook();
}

调用
新XSSFWorkbook()创建一个全新的空工作簿来填充。调用
OPCPackage.create()
将创建一个新的空OPC/OOXML包,其中没有任何内容,然后您需要手动使用空的XLSX或DOCX结构(您可能通常不希望这样做!)

我们可以说,OPCPackage分别与XLSX文件和带有OPCPackage的XSSFWorkbook相关

OpenOrCreate函数打开与文件相关的包(如果该包存在),否则创建一个(如果不存在)(这种情况很少发生)。换句话说,它几乎做到了Gagravarr在没有使用 f、 存在支票

如果指定的文件不存在,此函数将返回一个新创建的包,否则该包将从该文件中提取

通常,您的操作的后续过程包括:

  • 创建一个新文件obect
  • 打开与此文件相关的OPCPackage
  • 创建与此XSSFWorkbook对象相关的新XSSFWorkbook

  • 我们可以说OPCPackage分别与xlsx文件和XSSFWorkbook与OPCPackage相关

    OpenOrCreate函数打开与文件相关的包(如果该包存在),否则创建一个(如果不存在)(这种情况很少发生)。换句话说,它几乎做到了Gagravarr在没有使用 f、 存在支票

    如果指定的文件不存在,此函数将返回一个新创建的包,否则该包将从该文件中提取

    通常,您的操作的后续过程包括:

  • 创建一个新文件obect
  • 打开与此文件相关的OPCPackage
  • 创建与此XSSFWorkbook对象相关的新XSSFWorkbook