POIの日付について
Excelからデータを取り出すのにApache POIというライブラリを使用しているのですが、これがまた曲者です。
Excelでは入力した値と表示されている値が違うなんてことがあります。
例えば、1.65と入力したら2と表示されたり、6/15と入力したら6月15日と表示されたり。
これがVBAであれば、ValueプロパティとTextプロパティで取得することができるのですがPOIだとなかなか面倒です。
基本的にValueでしか取得できません。
しかし書式に沿って取得してくれるものもあります。
DataFormatter#formatCellValue(Cell)を使えば、書式に沿って取得することができます。
が、対応しないものもあります。
今回は日付についてお話ししますが、まず日本形式では取れません。
2018/6/15を取得してみると、6/15/18が取れます。
これは英語圏のフォーマットのようで、それならばロケールを日本にして取得してみようとしたのですが、これまた6/15/18……。
うーん、日本が対応していないのでしょうか?一応DataFormatterのインスタンス作成時にロケールの指定ができるんですけどね。
ロケールが取得できていないのかとも思ったのですが、ブレークはって確認したらJPでした。
変換ライブラリを使わずにとなると、javaの方でフォーマット指定するしかなさそうですね。
それにしても何故こんなにも不便なのでしょうか…?
結局取得できる方法が見つかりませんでした…。
Webアプリに手をつける
初のお仕事がWebアプリケーション関係。
今までしたことのないフロントエンド。
とりあえず、Angularを使うみたいです。
Angularって、Googleが開発したJavaScriptのフレームワークです。
そもそもJavaScriptを触ったことのない私は
なんか動くやつっていうイメージしかない…。
特徴として双方向データバインディングで、
画面で変更した値がデータの方に反映されたり、その逆だったりを
HTMLの要素とプログラムが連動しているから自動で処理してくれるらしい。
コンポーネントっていう機能があって、
これはリストとかフォームのHTMLを部品化して再利用しちゃおう!って感じ。
似たような要素を使いまわしたほうが楽だよね〜とか、
編集するときコンポーネントだけでいいから楽だね〜って感じかな。
そして、AngularをインストールするのにNode.jsっていうのが必要なんだけど、
Node.jsってサーバサイドでも動くJavaScriptみたいなやつ。
厳密にはサーバサイド側で実行できるようにしてくれたり、サーバ構築をしてくれる。
これのメリットとしてクライアント、サーバサイドどっちでも
同じ言語でかけたら楽〜〜〜って感じだったはず。
Node.jsが優秀で、特徴としてレスポンスが速い(らしい)
非同期処理だからサーバから値を取得していなくても処理を実行できる!
しかも、シングルスレッドだから少ないメモリで良い。
大量のアクセスがあっても非同期処理でさばいちゃうから速い!んですって。
なるほどなるほど〜〜って考えていても、
覚えること多くてまだ点と点繋がってない感じ。。。
とりあえず、書きなぐっておく。