Есть ли способ получить все встроенные объекты в файл .xlsx, используя событие xssf mdel api - PullRequest
0 голосов
/ 09 сентября 2011

Есть ли способ получить все встроенные объекты в файле .xlsx, используя модель событий xssf api?

Usermodel имеет метод workbook.getallembedds ... аналогично, есть ли что-то в eventmodel?

Это пример в usermodel. Я хочу реализовать ту же функциональность, используя eventusermodel. Пожалуйста, помогите.

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

Вместо xssfworkbook (в пользовательской модели) в коде модели события у меня есть containerObject типа OPCPackage.

@ Гаграварр: Спасибо за ваш ответ. Я попытался использовать метод, предложенный вами ... но я не могу получить содержимое встроенного 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 ]

1 голос
/ 15 сентября 2011

Наконец все, что я использовал, было этим!

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

  for (PackagePart pPart :parts) {

  String contentType = pPart.getContentType();


 if (contentType.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) {
1 голос
/ 09 сентября 2011

Ваш лучший выбор, вероятно, состоит в том, чтобы просто перечислить все части пакета и найти те, которые вас интересуют из этого

С другой стороны, логика идентификации встроенных деталей, прикрепленных к данному листу, довольно проста:

    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;
...