NodejsでCSVをダウンロードする
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ファイルがダウンロードできました。