Java OPCPackage中的open函数和create函数有什么区别
我试图写一个函数,可以创建一个excel文件,如果不存在。如果存在,则应在末尾追加内容。文件可能会变大,所以我想使用OPCPackage。以下是代码片段: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
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