Header Ads

作っておきたいプログラム


●CSV出力

・RFC4180に準拠した形で用意する。
→ExcelでCSVを読み込んだ時の解釈に似せて作ると良いと思う。
→とりあえず「"」で括る時は行の先頭が「"」であるか2カラム目以降なら「,"」と続いて書いてないと括り文字として解釈されないらしい。閉じ括り「"」までの「,」が区切り文字としてでは無くて単なる文字として扱われるが、セルに表示する内容としては、括り文字を除外した次の「,」までの模様。

・文字コードは、UTF-16(BOM付き) ※確かUTF-16にBOMを付ける事でUTF-16LEと解釈される。
→Excelの名前を付けて保存でファイルの種類「Unicode テキスト (*.txt)」を選択した時の文字コードと合せる。(※Excel 2016時点で変わりなし。)
→Javaだと"UnicodeLittle"を指定する。

・タブ区切り

・拡張子は「.txt」
→「.csv」とすると文字コードを「UTF-8(BOMあり)」にしないと直接Excelで開いてしまった時に文字化け。 あとカンマ区切りにしないとセル毎に表示されない。ちなみのExcelからCSV出力するとShift-JISで出力される。

・出力したらテキストエディタで開いて、Excelにコピー&ペースト(コピペ)する想定の設定となる。 (※0始まりの固定長コードの存在を加味して、事前に貼り付けるシートの書式設定を文字列にしてもらう様、手順書を作成して提示して置く。)


●Excel編集

・Apache POIを使うが、お決まりの処理が多いのと、さすがにExcelほどの高機能なアプリを全てサポートできてる訳ではないので、予め出来る事を把握する上でも作っておいた方が良い。

・例えば入力規則のある行をコピーした時、入力規則はコピーされない為、自分で設定し直す必要が出て来る。(POIバージョン3.8-0120326時点)

・他にもセル内に式があった場合、どの様に扱うかをきちんとプログラムで制御しなければならない。
→確か、式をセットして値を計算するのは別のAPIだったと思う。


●巨大なオブジェクトをファイル化してメモリ消費を抑える

パフォーマンス(性能)を犠牲にするが、シリアライズ(直列化)を使ってメモリに乗り切らない様なオブジェクトを1度外に出しておく

普通にCSVでも良いが、オブジェクトをそのまま扱えるのも良い

圧縮したり分割したりするオプションも考慮に入れる

0 件のコメント

最新投稿

オンライン Web 会議 ツール まとめ

オンライン飲みのお誘いがあったのでツールをいろいろ調べてまとめてみました。 TeamsやGoogleハングアウト(現はGoogle Meet)は仕事で使って知ってましたが、有名なZoomとか、それ以外にも良さそうなのがあったので、調べてまとめてますので、良かったら参考にしてみてく...