他のファイルへのリンクを含むExcelファイルを分析しようとしていますが、ファイル名とパスを知りたいです。そのために私はapachepoi3.14を使用しています。
Ref3DPtgオブジェクトについては理解しましたが、Ref3DPxgについてはその方法がわかりません。セルアドレスとシート名にしかアクセスできません。
誰かがそれを行う方法を知っていますか?
コード:
...
if(ptg instanceof Ref3DPxg){
cellAddress = ptg.format2DRefAsString();
sheetName = ptg.getSheetName();
workbookName = ???;
} else if(ptg instanceof Ref3DPtg) {
// by Ref3DPtg is no problem
}
XLSXファイル形式が外部参照を保存する方法のため、実際にはそうではありませんが=[Other.xlsx]Sheet1!A1
、実際=[23]Sheet1!A1
には2段階のプロセスです。まず、Pxgから外部ワークブック番号を取得します。次に、ワークブックから、そのワークブック番号のExternalLinksテーブルを取得し、1つずつメモします。(外部ワークブック0は実際には現在のワークブックであるため、外部ワークブック1は外部リンク0に対応します)。最後に、そのリンクのファイル名を取得します
したがって、コードは次のようになります。
if(ptg instanceof Ref3DPxg){
Ref3DPxg pxg = (Ref3DPxg)ptg;
int extWB = pxg.getExternalWorkbookNumber();
int extLink = extWB-1;
ExternalLinksTable links = wb.getExternalLinksTable().get(extLink);
String filename = links.getLinkedFileName();
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加