目的
CSVファイルを作成して、ZIPファイルに圧縮するコードを書いていました。社内の別のプロジェクトでもそのようなコードが書かれていたので、ライブラリ化して利用できるようにしました。
特徴
- CSVファイルもZIPファイルもテンポラリなディレクトリに作成して、処理が終わったら自動でファイルを消します。後処理のことを考えなくてよいです
- ファイルに書き込むので、大量のデータでもメモリを食いつぶすことはありません
- エクセル向けに特化してカスタマイズを用意しています。
利用例
main.rs
use csv_zip_maker::{CsvZipError, CsvZipMaker};
fn main() -> Result<(), CsvZipError> {
let mut maker = CsvZipMaker::new("test", "summary")?;
let mut csv_maker = maker.make_csv_maker_for_excel("summary1")?;
csv_maker.write(&vec!["aaa", "bbb"])?;
csv_maker.write(&vec!["ccc", "ddd"])?;
maker.add_csv(&mut csv_maker)?;
let mut csv_maker = maker.make_csv_maker("summary2")?;
csv_maker.write(&vec!["111", "222"])?;
csv_maker.write(&vec!["333", "444"])?;
maker.add_csv(&mut csv_maker)?;
let path_buf = maker.make_zip_file()?;
std::fs::copy(path_buf, "test.zip")?;
Ok(())
}
まとめ
CSVやZIPの作り方を、いちいちぐぐってると大変ですが、一度ライブラリ化すれば安心して使えるようになります。
ファイルからZIPファイルに書き込むサンプルがぐぐっても中々見つからなくて、同じ苦労をしなくてよくなるので、うれしいです。