LoginSignup
20
7

More than 1 year has passed since last update.

RustでCSVを作成してZIPファイルにするライブラリを書きました。

Last updated at Posted at 2022-07-02

目的

CSVファイルを作成して、ZIPファイルに圧縮するコードを書いていました。社内の別のプロジェクトでもそのようなコードが書かれていたので、ライブラリ化して利用できるようにしました。

csv-zip-maker

特徴

  • 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ファイルに書き込むサンプルがぐぐっても中々見つからなくて、同じ苦労をしなくてよくなるので、うれしいです。

20
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
7