首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >open functions和create functions OPCPackage之间有什么区别

open functions和create functions OPCPackage之间有什么区别
EN

Stack Overflow用户
提问于 2014-01-10 23:30:53
回答 2查看 5.3K关注 0票数 1

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

代码语言:javascript
复制
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);

我也尝试了create()函数,而不是openOrCreate函数,但是错误仍然存在。所以这让我怀疑我对这个包的open和create功能的理解。Here是包含已发生错误信息的问题。

EN

回答 2

Stack Overflow用户

发布于 2014-01-10 23:47:02

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

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

你可能想要做的更像是:

代码语言:javascript
复制
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();
}

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

票数 5
EN

Stack Overflow用户

发布于 2014-01-11 02:49:34

我们可以说,OPCPackage分别与xlsx文件相关,XSSFWorkbook与OPCPackage相关。

OpenOrCreate函数打开与文件相关的包,如果该包存在,则创建一个包(这种情况很少发生)。换句话说,它几乎不使用f.exists检查就可以执行Gagravarr编写的操作。

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

操作的后续过程通常是:

  1. 创建新文件对象
  2. 打开与此文件相关的OPCPackage
  3. 创建与此XSSFWorkbook object

相关的新XSSFWorkbook

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21048178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档