複数のEXCELシートを1つのEXCELにまとめる

Uncategorized
248 words

ExcelJSを使用して、2つのExcelブックのシートを1つのシートにまとめる方法

ExcelJSのインストール

Node.jsプロジェクトにExcelJSをインストールする。

1
npm install 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';

// 2つのExcelファイルのシートを1つに統合する。
async function mergeExcelSheets() {

// 1つ目のExcelファイルを読み込み
const workbook1 = new ExcelJS.Workbook();
await workbook1.xlsx.readFile('book1.xlsx');

// 2つ目のExcelファイルを読み込み
const workbook2 = new ExcelJS.Workbook();
await workbook2.xlsx.readFile('book2.xlsx');

// 2つ目のExcelの全シートを1つ目のExcelに統合
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);