Node.js で xlsx ファイルをバッファとして返信する方法


こんにちは!xlsx ファイルをバッファとして使用してレスポンスする方法について説明します。

まず、xlsx ファイルを操作するために、Node.js のライブラリである「xlsx」を使用します。以下の手順でインストールしてください。

npm install xlsx

次に、以下のコード例を使用して、xlsx ファイルをバッファとして作成し、レスポンスとして返すことができます。

const xlsx = require('xlsx');
const express = require('express');
const app = express();
app.get('/download', (req, res) => {
  // xlsx ファイルを作成するためのデータ
  const data = [
    ['名前', '年齢'],
    ['Alice', 28],
    ['Bob', 32],
    ['Charlie', 45]
  ];
  // ワークブックを作成
  const workbook = xlsx.utils.book_new();
  const worksheet = xlsx.utils.aoa_to_sheet(data);
  xlsx.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  // ワークブックをバッファに書き込む
  const buffer = xlsx.write(workbook, { type: 'buffer', bookType: 'xlsx' });
  // レスポンスとしてバッファを送信
  res.set('Content-Disposition', 'attachment; filename="example.xlsx"');
  res.set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  res.send(buffer);
});
app.listen(3000, () => {
  console.log('サーバーがポート 3000 で起動しました');
});

上記のコードでは、/download エンドポイントに GET リクエストが送信されたときに、xlsx ファイルが作成され、バッファとしてレスポンスされます。ファイル名は「example.xlsx」として指定されていますが、必要に応じて変更してください。

これで、xlsx ファイルをバッファとして返信することができます。必要に応じて、他のエンドポイントやデータを追加することもできます。