有没有办法使用xssf事件mdel api在.xlsx文件中获取所有嵌入对象

时间:2011-09-09 11:34:01

标签: apache-poi xlsx xssf

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

Usermodel的方法是workbook.getallembedds ...同样在eventmodel中有什么内容吗?

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

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

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

@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());

`

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

最后我用的就是这个!

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

  for (PackagePart pPart :parts) {

  String contentType = pPart.getContentType();


 if (contentType.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {