はじめに
json から csv 形式へ変換できるライブラリ csv-stringify
のご紹介です!
使い方
1. 定義
使いたいファイルのインポート箇所に↓を設定します。
const stringify: any = require('csv-stringify/lib/sync');
2. ヘッダー情報の設定
以下のように変数名とヘッダー名を紐づけます。
const headerRecord = {
id: 'ID',
date: '日付',
userName: 'ユーザー名',
shopName: '会員名',
productName: '商品名',
mailAddress: 'メールアドレス'
};
3. 変換したいオブジェクトを用意
targetObject の中身は以下のようなオブジェクトが格納されているとします。
const targetObject = [
{
id: 1,
date: '2022/11/01',
userName: 'テスト一郎',
shopName: 'テスト商店',
productName: '商品001<br>商品002<br>商品003<br>商品004<br>商品005',
mailAddress: 'test01@sample.com',
},
{
id: 2,
date: '2022/11/01',
userName: 'テスト二郎',
shopName: 'テスト商店',
productName: '商品011<br>商品012<br>商品013<br>商品014<br>商品015',
mailAddress: 'test02@sample.com'
},
{
id: 3,
date: '2022/11/01',
userName: 'テスト三郎',
shopName: 'テスト商店',
productName: '商品021<br>商品022<br>商品023<br>商品024<br>商品025',
mailAddress: 'test03@sample.com',
prcDate: '2022/11/24 11:22:33.444'
},
{
id: 4,
date: '2022/11/01',
userName: 'テスト四郎',
shopName: 'テスト商店',
productName: '商品031<br>商品032<br>商品033<br>商品034<br>商品035',
mailAddress: 'test04@sample.com'
},
{
id: 5,
date: '2022/11/01',
userName: 'テスト五郎',
shopName: 'テスト商店',
productName: '商品041',
mailAddress: 'test05@sample.com'
},
{
id: 6,
date: '2022/11/01',
userName: 'テスト六郎',
shopName: 'テスト商店',
productName: '商品051',
mailAddress: 'test06@sample.com'
},
{
id: 7,
date: '2022/11/01',
userName: 'テスト七郎',
shopName: 'テスト商店',
productName: '商品061',
mailAddress: 'test07@sample.com'
},
{
id: 8,
date: '2022/11/01',
userName: 'テスト八郎',
shopName: 'テスト商店',
productName: '商品071',
mailAddress: 'test08@sample.com'
}
]
4. csv への変換処理を記載
あとは以下のように stringify で噛ませることで、、、
const csv: string = stringify(targetObject, {
header: true,
columns: headerRecord,
quoted: true,
record_delimiter: 'windows'
});
csv の変数の中には csv 形式になった文字列が格納されます!!
"ID","日付","ユーザー","店名","商品名","メールアドレス"
"1","2022/11/01","テスト一郎","テスト商店","商品001<br>商品002<br>商品003<br>商品004<br>商品005","test01@sample.com"
"2","2022/11/01","テスト二郎","テスト商店","商品011<br>商品012<br>商品013<br>商品014<br>商品015","test02@sample.com"
"3","2022/11/01","テスト三郎","テスト商店","商品021<br>商品022<br>商品023<br>商品024<br>商品025","test03@sample.com"
"4","2022/11/01","テスト四郎","テスト商店","商品031<br>商品032<br>商品033<br>商品034<br>商品035","test04@sample.com"
"5","2022/11/01","テスト五郎","テスト商店","商品041","test05@sample.com"
"6","2022/11/01","テスト六郎","テスト商店","商品051","test06@sample.com"
"7","2022/11/01","テスト七郎","テスト商店","商品061","test07@sample.com"
"8","2022/11/01","テスト八郎","テスト商店","商品071","test08@sample.com"
さいごに
オプションを変更することで、ヘッダーの有無や、クオーテーションをつけるかどうかの切り替えも可能です!
github にサンプルがたくさんあるので、形式を変更したい場合は確認してみると良いと思います!
参考