🚀 新規事業

csv-export

最終更新 2026年05月09日 / 40_新規事業/SCALE_Build/カタログ/機能集/csv-export.md

CSV エクスポートヘルパ

用途

配列データを CSV にしてダウンロード。Excel互換のためBOM付与。

特徴

  • 配列 → CSV
  • BOM付与(Excel互換)
  • カンマ・改行エスケープ
  • blob ダウンロード

コード(コピペ用)

export function exportCSV<T extends Record<string, any>>(rows: T[], filename = 'export.csv') {
  if (rows.length === 0) return;
  const headers = Object.keys(rows[0]);
  const escape = (v: any) => {
    const s = String(v ?? '');
    return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s;
  };
  const csv = [
    headers.join(','),
    ...rows.map(r => headers.map(h => escape(r[h])).join(','))
  ].join('\n');
  // Excel 互換のため BOM 付与
  const blob = new Blob(['\uFEFF' + csv], { type: 'text/csv;charset=utf-8' });
  const url = URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url; a.download = filename;
  document.body.appendChild(a); a.click(); document.body.removeChild(a);
  setTimeout(() => URL.revokeObjectURL(url), 1000);
}

使い方

対象プロジェクトに該当ファイルをコピーして、props を流し込むだけ。

注意事項

  • 依存パッケージを忘れず追加