当前位置: 首页 > 知识库问答 >
问题:

在Excel中使用Apache POI将文件嵌入到XSSF表中

宣熙云
2023-03-14

对于如何使用Apache POI将文件嵌入Excel的问题,我已经找到了kiwiwings的答案,但不幸的是,他的答案只涵盖了HSSF电子表格(XLS格式),而我们目前使用的是新的XSSF格式(XLSX),针对HSSF电子表格提出的解决方案将不起作用。我尝试移植它,但棺材上的最后一颗钉子来自这样一个事实,即在XSSF世界中没有等效的HSSFObjectData。

这就是我到目前为止所做的--我找到了一种将文件附加到Excel文件的方法。这段代码可以做到这一点:

private PackagePart packageNotebook(
    final OPCPackage pkg,
    final String notebookTable,
    final String taskId,
    final String notebookName,
    final byte[] contents
) throws InvalidFormatException, IOException
{
    final PackagePartName partName =
        PackagingURIHelper.createPartName( "/notebook/" + notebookTable + "/" + taskId + "/" + notebookName );
    pkg.addRelationship( partName, TargetMode.INTERNAL, PackageRelationshipTypes.CUSTOM_XML );
    final PackagePart part = pkg.createPart( partName, "text/xml" );
    IOUtils.write( contents, part.getOutputStream() );

    return part;
}

有人有一个工作的例子如何做到这一点吗?

共有1个答案

公孙黎昕
2023-03-14

我已经通过#60586应用了一个补丁,所以嵌入现在更容易了。下面的代码片段摘自相应的JUnit测试。

Workbook wb1 = new XSSFWorkbook();
Sheet sh = wb1.createSheet();
int picIdx = wb1.addPicture(getSamplePng(), Workbook.PICTURE_TYPE_PNG);
byte samplePPTX[] = getSamplePPT(true);
int oleIdx = wb1.addOlePackage(samplePPTX, "dummy.pptx", "dummy.pptx", "dummy.pptx");

Drawing<?> pat = sh.createDrawingPatriarch();
ClientAnchor anchor = pat.createAnchor(0, 0, 0, 0, 1, 1, 3, 6);
pat.createObjectData(anchor, oleIdx, picIdx);
 类似资料:
  • 问题内容: 我已经找到了如何使用ApachePOI将文件嵌入Excel的问题的奇妙答案,但是不幸的是,他的答案仅涉及HSSF电子表格(XLS格式),我们目前正在使用新的XSSF格式(XLSX),以及解决方案为HSSF电子表格提出的建议将不起作用。我尝试移植它,但是棺材中的最后一个钉子来自XSSF世界中没有等效的HSSFObjectData。 到目前为止,这是我所做的-我找到了一种将文件附加到Exc

  • 我需要使用Java Apache POI在excel中嵌入文件(格式为xlsx)。我找到了一个使用POI-HSSF在excel中嵌入文件(格式为xls)的示例 (使用Apache POI将文件嵌入到Excel中), 但此示例不适用于excel xlsx格式。有人知道使用是否可以做到这一点吗?

  • 我正在使用Apache POI将数据导出到Excel文件中。在一个奇怪的需求中,我需要使用这个POI在Excel中嵌入一个文件。我有这个文件,可以将其作为流或字节数组。在谷歌搜索了很多时间后,我怀疑POI是否真的支持我的需求。我们能把文件嵌入Excel吗?-( 干杯,阿诺普

  • 我是编程界的新手。嗯,我正在尝试使用ApachePOI库读取excel文件(5行5列)。我实际上有两个相同问题的实现。在第一个代码片段中,我只是读取excel文件并将其打印到控制台中。 然而,现在我正试图将读取的excel数据保存到一个数组中。所以我想在动态获取excel行和列大小后设置数组大小。但令我惊讶的是,当我执行第二个代码段时,似乎“while(cellIterator.hasNext()

  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 我对Java编程是新手。我当前的项目要求我读取excel表中的嵌入式(ole)文件并获取其中的文本内容。阅读嵌入式word文件的例子很好,但是我无法找到阅读嵌入式pdf文件的帮助。通过看类似的例子尝试了很少的事情....但没成功。