【发布时间】:2016-01-25 18:21:22
【问题描述】:
我尝试使用 apache poi 更改嵌入在 docx 文件中的 xlsx 文件的值。可悲的是,我还没有找到解决这个问题的合适方法。运行我的程序后,新创建的带有嵌入式 xlsx 表的 docx 文件没有改变。 到目前为止,这是我尝试过的:
FileInputStream fis = new FileInputStream("old.docx");
XWPFDocument xdoc = new XWPFDocument(OPCPackage.open(fis));
System.out.println(xdoc.getAllEmbedds().get(0));
File file2 = new File("new.docx");
for (PackagePart pPart : xdoc.getAllEmbedds()) {
String contentType = pPart.getContentType();
// Excel Workbook - OpenXML file format
if (contentType.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {
XSSFWorkbook embeddedWorkbook = new XSSFWorkbook(pPart.getInputStream());
XSSFSheet sheet = embeddedWorkbook.getSheetAt(0);
sheet.getRow(1).getCell(1).setCellValue("someValue"); //change value here
embeddedWorkbook.write(pPart.getOutputStream());
}
}
xdoc.write(new FileOutputStream(file2));
知道如何解决这个问题吗?
【问题讨论】:
-
如果跳过 XWPF 部分,只在 OPCPackage 级别工作会发生什么?
标签: java excel ms-word apache-poi docx