1

問題を再現する手順:-

  1. ハイパーリンクを含む 1 つのセルを含む xls ファイルを作成します。

  2. ハイパーリンクのアドレスを読み取ってみてください。リンクアドレスは「uk」として表示されます。住所番号記号 (#) の後の文字のみがハイパーリンクアドレスと見なされます。

コードスニペット:-

文字列 strLinkAddress = cell.getHyperlink().getAddress();

リンクアドレスとして「http://www.bailii.org/databases.html#uk」ではなく「uk」を返します。

4

1 に答える 1

0

cell.getHyperlink().getLabel()代わりに使用してください。ここでソースを確認して、.xls ファイルに存在する可能性のあるさまざまな種類のハイパーリンクを POI がどのように処理するかを確認してください。

編集

わかりました。ラベルが住所と一致しない場合、私たちの仕事は難しくなります。それは私にとって少しハックでした。したがって、HSSFHyperlinkクラスを調べてさまざまな列挙を表示すると、次のようなものが期待どおりhttp://www.google.comの型になります。LINK_URLのようなものhttp://www.bailii.org/databases.html#ukは型に解決されLINK_DOCUMENTます。しかし、これはドキュメントではなく、URL です。classHyperlinkRecordを調べると、245 行目の直前にコメントが表示されます。

Text describing a place in document. In Excel UI, this is appended to the address, (after a '#' delimiter). This field is optional. If present, the HLINK_PLACE must be set.

同じクラスの 699 行目のmakeHLINK_PLACEisDocumentLinktrue を返すため、URL リンクではなくドキュメント リンクとして分類されます。

したがって、リンクに # が表示されるたびに、POI がそれをドキュメント内のリンクと見なすように設計された動作のように見えます。私がそれをバグと呼んでいるかどうかはわかりませんが、あなたが望むようには機能しません。

于 2012-11-06T06:06:32.063 に答える