ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

embulk-parser-poi_excel 0.1.6 セルのキャッシュ値の取得

2017-01-28 17:04:05 | PG(分散処理)

きっかけは、Embulkで新しくExcelファイルを読もうと思ったら、プラグインが固まった(ように見えた)こと。
(超どうでもいいが、「きっかけは」って書くと、LINDBERGのLITTLE WINGが頭の中で始まるw)

トレースログを埋め込んで(自分で作ったプラグインだから、何とでもなるw)見てみたら、セルの数式の計算でやたらと時間がかかっている。1セル7分。おいおい(汗)
SUMIFのような関数で列全体とかが指定されていると、1行目~1,048,576行目までの全てを探しに行く実装になっているようだorz 関数がネストしているような“神エクセル”だと、そりゃ遅いわ…。
(POIでは実データの有る最大行数は取れるんだから、それを考慮してくれればいいのに(苦笑))

まぁPOIの実装は置いといて、Excelでファイルを開いたときは値が表示されているので、これが取れればいいのになぁと思って試しにPOIで値を取得するメソッドを呼んでみたら、取れたし!
後はその値がどの型(数値か文字列か)が分かる方法があれば…と思ってCellクラスを眺めてみたら、ばっちりgetCachedFormulaResultTypeというメソッドがあった!これは知らなかった。。
計算の結果がキャッシュされていないExcelファイルではどうしようもないだろうけど、とりあえず今回の目的にはこれでOK。

という訳で、embulk-parser-poi_excelプラグインに、キャッシュされている値を取得できるようにするオプションを追加した。

ついでに、シート名の指定でワイルドカードを使えるように修正。 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Embulk xlsxファイルプレビュ... | トップ | 2017冬アニメについて一言 »
最新の画像もっと見る

コメントを投稿

PG(分散処理)」カテゴリの最新記事