我正在尝试编写一个函数,如果不存在,它可以创建一个 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);
Run Code Online (Sandbox Code Playgroud)
而不是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();
}
Run Code Online (Sandbox Code Playgroud)
调用new XSSFWorkbook();会创建一个全新的空工作簿来填充。调用OPCPackage.create()会创建一个新的空 OPC / OOXML 包,其中没有任何内容,然后您需要手动填充一个空的 XLSX 或 DOCX 结构(您可能通常不想这样做!)
| 归档时间: |
|
| 查看次数: |
5152 次 |
| 最近记录: |