3

poiで実装できない関数を登録する方法を知っている人はいますか? 例: インターセプト?

4

1 に答える 1

1

答えは、実装したい機能の種類によって異なります。ファイル形式に事前定義された特別な ID を持つ Excel 組み込み関数の 1 つで、現在 POI には実装がありませんか? それともユーザー定義関数用ですか?(最近の Excel 関数の一部は、実際にはファイル形式の UDF として実装されています)

後者の場合は、POI Web サイトにその方法に関する優れたドキュメントがあります。それに従うことをお勧めします。問題ないはずです!

前者の場合は、少し厄介です。最善の策は、式を自分で実装し、POI Bugzillaで拡張バグを開き、実装を添付してから、修正を含むナイトリー ビルドを取得することです。テストのために、関数のメタデータ ファイルを編集して、関数のファイル形式 ID に対してクラスを登録する必要があります。少し面倒ですが、POI に不足している機能を 1 つでも貢献していただければ、すぐに対応できます。

更新:組み込み関数の実装に関する詳細情報。まず、functionMetadata.txt で関数の ID を見つけます (この場合は 311)。次に、関数を実装します。ここで、関数をカスタマイズorg.apache.poi.ss.formula.eval.FunctionEvalして、適切なインデックスに追加します。最後に、パッチを提出してください。(ビルトイン関数をオーバーライドするのは、半分意図的に難しいです。部分的には、不足している関数の貢献を人々に奨励するためです!)

于 2012-09-02T06:14:25.787 に答える