4/28  4月はいろいろあるようで結局いつもどおりだった



4/28  4月はいろいろあるようで結局いつもどおりだった

今の仕事が終わったら二度と使わないかも知れない知識だけど、ググって回答が見つからなかったのでとりあえずメモっておく程度の話。

Javaでエクセルファイルを読み書きするのに使えるライブラリとして「Apache POI」というものがあります。
行削除がとても面倒くさかったりしますが、基本的な読み書きは問題ないです。
そんなpoiを使っていた時に起きたエラーがこれ。

「InvocationTargetException」

具体的にはWorkbookFactory.create()をした時に発生したんですが当初これの発生条件がさっぱりわかりませんでした。
使用するエクセルファイルによって出たり出なかったり、かと思えば同じエクセルファイルでも手動で開いて中身を確認して閉じてみたらエラーが起きなくなったり。

まぁごちゃごちゃと試行錯誤の過程を語るのは読んでる方もまだるっこしいのでサクッと書いちゃいますが、WorkbookFactoryで開いたWorkbookをclose()して、それをそのまま読み込んだら発生しました。
詳しくは調べていませんが、どうもclose()した時にエクセルのファイルサイズが少し小さくなってるんでファイルヘッダかなにかの情報でも書き換えてるんでしょうか?

まぁともかく。
対策とはしてとりあえずclose()しなければいいです。あるいはclose()したエクセルファイルを手動で開いて上書き保存すれば正常な状態に戻ります。
close()しないとメモリを圧迫する可能性もありますが読み込んだオブジェクトをnullにしとけばそのうち開放されますし多分大丈夫でしょう。



それはそうと久しぶりに本日のおすすめ小説。
ゲーム実況による攻略と逆襲の異世界神戦記(アウタラグナ)
とにかく熱い。熱血と言うよりは感情を強く揺さぶられる文体で思わずうるうるきちゃう。
いもでんぷんパートの緩さとのバランスがちょうどいいです。
前作の火刑戦旗も読んでますがあちらは終始重いというか硬いので一気に読み進めようとすると疲れちゃいますね。
わたし的に今一番楽しみな小説です。