0

有没有办法使用 xssf 事件模型 api 获取 .xlsx 文件中的所有嵌入对象?

Usermodel 有方法 workbook.getallembedds ......类似地,eventmodel 中有什么东西吗?

这是 usermodel 中的一个示例。我想使用 eventusermodel 实现相同的功能。请帮助。

 for (PackagePart pPart : workbook.getAllEmbedds()) {
 String contentType = pPart.getContentType(); 
 if (contentType.equals(------)

在 eventmodel 代码中,我有一个 OPCPackage 类型的 containerObject,而不是 xssfworkbook(在 usermodel 中)。

@Gagravarr:感谢您的回复。我尝试使用您建议的方法...但我无法获取嵌入式 excel 的内容。请您帮我找出我哪里出错了。这是代码的一部分:

      ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(container);
      XSSFReader xssfReader = new XSSFReader(container);

      XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator)xssfReader.getSheetsData();
      for(PackageRelationship rel : iter.getSheetPart().getRelationshipsByType(XSSFRelation.OLEEMBEDDINGS.getRelation()))
                  embedds.add(getTargetPart(rel));

          for (PackagePart pPart :getAllEmbedds()) {

              String contentType = pPart.getContentType();


              // Excel Workbook - OpenXML file format
               if (contentType.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml")) {
                OPCPackage excelObject = OPCPackage.open(pPart.getInputStream());

`

4

2 回答 2

1

您最好的选择可能只是列举所有包装部分,并从中找到您感兴趣的部分

或者,识别附加到给定工作表的嵌入部件的逻辑非常简单:

    List<PackagePart> embedds = new LinkedList<PackagePart>();

    // Get the embeddings for the workbook
    for(PackageRelationship rel : sheet.getSheetPart().getRelationshipsByType(XSSFRelation.OLEEMBEDDINGS.getRelation()))
            embedds.add(getTargetPart(rel));

    for(PackageRelationship rel : sheet.getSheetPart().getRelationshipsByType(XSSFRelation.PACKEMBEDDINGS.getRelation()))
            embedds.add(getTargetPart(rel));

    return embedds;
于 2011-09-09T13:01:41.313 回答
1

最后我用的就是这个!

  ArrayList<PackagePart> parts = container.getParts();

  for (PackagePart pPart :parts) {

  String contentType = pPart.getContentType();


 if (contentType.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {
于 2011-09-15T04:56:52.430 回答