Nodejsで、データベースの内容をCSVでダウンロードすることがあったときのメモです。

・項目名は日本語とする

・Excelで読み込むのでShift-JISとする

概要です

今回、csvへのフォーマットはプラグインの “json2csv” を利用しました。

UTF-8 → Shift-JIS は “jconv”を利用しました。

const Json2csvParser = require('json2csv').Parser;

データはこんな感じ。
items = [
{
"name" : "田中一郎",
"zip" : "5660000"
},{
"name" : "佐藤二朗",
"zip" : "5660001"}
]

項目名とタイトルのマッチングを行う。
const fields = [{
label: '発注日',
value: 'order_ymd',
},{
label: '施設名',
value: 'hospital_name',
}]
const json2csvParser = new Json2csvParser({ fields });

ダウンロードします。

const csv = json2csvParser.parse( items );

res.setHeader('Content-disposition', 'attachment; filename=data.csv');
res.setHeader('Content-Type', 'text/csv; charset=Shift_JIS');

res.send( jconv.convert( csv, 'UTF8', 'SJIS' ));
res.end();

これで、Shift-JISに変換されたCSVファイルがダウンロードできました。