Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import { CsvHeader } from '../models/csvHeader'; import { Buffer, Workbook, Worksheet } from 'exceljs'; import { ItemCsvList } from '../models/itemCsv'; import { DepreiationCsvList } from '../models/depreiationCsv'; export const useDownloadCsv = async ( filename: string, sheetName: string, header: CsvHeader[], body: DepreiationCsvList | ItemCsvList ): Promise<void> => { const workbook: Workbook = new Workbook(); const worksheet: Worksheet = workbook.addWorksheet(sheetName); // ヘッダーの設定 worksheet.columns = header; // データの挿入 worksheet.addRows(body.items); // CSVデータをバッファとして取得 const csvBuffer: Buffer = await workbook.csv.writeBuffer(); // Blobを作成 // Blob .. バイナリデータを格納するimuutableなオブジェクト const blob: Blob = new Blob([csvBuffer], { type: 'text/csv;charset=utf-8;', }); // バイナリデータを保持するURLの一種 const url: string = window.URL.createObjectURL(blob); // ダウンロード const a: HTMLAnchorElement = document.createElement('a'); a.href = url; a.download = filename; a.click(); a.remove(); // リソースを解放 URL.revokeObjectURL(url); }; |