Closed2
express, Excel生成ダウンロード
概要
expressで、excel生成のメモになります。
- exceljs使います
環境
- express
- node: 20
作成したコード
- 関連のパス
- /test_excel
- package.json
{
"scripts": {
"start": "ts-node src/index.ts",
"dev": "ts-node-dev --respawn src/index.ts",
"build": "rimraf dist && tsc",
"deploy": "npm run build && vercel --prod"
},
"devDependencies": {
"@types/express": "^4.17.13",
"@types/node": "^17.0.32",
"rimraf": "^3.0.2",
"ts-node": "^10.7.0",
"typescript": "^4.6.4"
},
"dependencies": {
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"csrf": "^3.1.0",
"dotenv": "^16.0.1",
"exceljs": "^4.3.0",
"express": "^4.17.1",
"express-session": "^1.17.2",
"log4js": "^6.4.4",
"pg": "^8.7.3",
"ts-node-dev": "^1.1.8"
}
}
- routes/index.ts
- GET で、excel バイナリを、ダウンロードします
index.ts
router.get('/test_excel', async function(req: any, res: any) {
try {
console.log("#test_excel-start");
const workbook = new ExcelJS.Workbook();
workbook.addWorksheet('My Sheet');
const worksheet = workbook.getWorksheet('My Sheet');
// 列を定義
worksheet.columns = [
{ header: 'ID', key: 'id' },
{ header: '名称', key: 'name' },
{ header: '価格', key: 'price' },
];
// 行を定義
worksheet.addRow({id: 1001, name: 'みかん', price: 370});
worksheet.addRow({id: 1002, name: 'バナナ', price: 200});
worksheet.addRow({id: 1003, name: 'りんご', price: 260});
worksheet.addRow({id: 1004, name: 'トマト', price: 210});
const uint8Array = await workbook.xlsx.writeBuffer();
//console.log(uint8Array);
res.setHeader('Content-Type', 'application/octet-stream');
res.setHeader('Content-Disposition', 'attachment; filename=test.xlsx'); // ファイル名を指定
// バイナリデータをレスポンスとして送信
res.send(uint8Array);
console.log("#test_excel-end");
} catch (error) {
res.sendStatus(500);
}
});
- onedrive で、ひらきました
このスクラップは2023/09/24にクローズされました