【Node.js】CSVファイル出力

CSVファイルを操作することはよくあります。

今回は Node.js を使用してCSVファイルの出力を行います。

ライブラリ

csv-stringify

変数の内容(オブジェクトや配列)をCSV形式(カンマ区切り)へ変換するには csv-stringify というライブラリを利用すると簡単にできます。

npmによるインストールコマンドは以下の通りです。

npm install csv-stringify

iconv-lite

CSVファイルの文字コードは Shift-JIS で扱うことが多いです。プログラムで扱う文字コードは基本的にUTF-8なので、Shift-JIS へ変換します。

npmによるインストールコマンドは以下の通りです。

npm install iconv-lite

CSVファイルの出力

基本的な処理の流れは以下の通りです。

  • 変数の値を csv-stringify でCSVファイル形式(カンマ区切り)へ変換する。
  • iconv-lite で文字コードを Shift-JIS へ変換する。
  • ファイル出力する。

CSVファイルの定義

CSVファイルの内容を定義する上で、ヘッダーの有無、値をダブルクォートで囲むかどうかを決めることがよくあります。
今回は、ヘッダーあり、値をダブルクォートで囲みCSVファイルを出力します。

ソースコード

以下の通りです。

const Fs  = require('fs');
const { stringify } = require("csv-stringify/sync");
const Iconv = require('iconv-lite');

let contents = [
    { "年齢": "10", "名前": 'イチロー' },
    { "年齢": "20", "名前": 'ジロー' },
    { "年齢": "30", "名前": 'サブロー' },
];

// カンマ区切りへ変換する。
const csvString = stringify(contents, {
    header: true,
    quoted_string: true,
});

// Shift_JSIへ変換する。
const csvStringSjis = Iconv.encode(csvString, 'Shift_JIS');

// CSVファイルを出力する。
Fs.writeFileSync("result.txt", csvStringSjis);

結果

結果は以下の通りです。

"年齢","名前"
"10","イチロー"
"20","ジロー"
"30","サブロー"

最後に

特にありません。

© DeNnie.Lab All Rights Reserved.