0

xssf イベント モデル API を使用して .xlsx ファイルに埋め込まれたすべてのオブジェクトを取得する方法はありますか?

Usermodel にはメソッド workbook.getallembedds があります... 同様に、eventmodel には何かありますか?

これは usermodel の例です。eventusermodel を使用して同じ機能を実装したいです。親切に助けてください。

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

xssfworkbook (ユーザーモデル内) の代わりに、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());

`

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 に答える