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","サブロー"
最後に
特にありません。