ExcelJSを使用して、2つのExcelブックのシートを1つのシートにまとめる方法
ExcelJSのインストール
Node.jsプロジェクトにExcelJSをインストールする。
ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import ExcelJS from 'exceljs';
async function mergeExcelSheets() {
const workbook1 = new ExcelJS.Workbook(); await workbook1.xlsx.readFile('book1.xlsx');
const workbook2 = new ExcelJS.Workbook(); await workbook2.xlsx.readFile('book2.xlsx');
workbook2.eachSheet((worksheet) => { const cloneSheet = workbook1.addWorksheet("Clone"); const tmpModel = structuredClone(worksheet.model); cloneSheet.model = tmpModel; });
await workbook1.xlsx.writeFile('book1-merged.xlsx'); }
|
注意として、同じシート名が存在するエラーになる。
エラーを回避するには、コピーするときにシート名を変更する必要がある。
React やブラウザーで使いたい場合は Excelファイル をダウンロードすることになる。
ファイルをダウンロードするには axios を使う。
1 2 3 4
| const response = await axios.get(`https://example.com/book1.xlsx`, { responseType: "arraybuffer" }); const data = new Uint8Array(response.data); const workbook1 = new ExcelJS.Workbook(); await workbook1.xlsx.load(data);
|