JavaScript 使用 ExcelJS 套件快速匯出 Excel

安裝

    
npm install exceljs
    

或是使用 CDN:
    
<script src="https://cdnjs.cloudflare.com/ajax/libs/exceljs/4.3.0/exceljs.min.js" ></script>
    

操作基礎

    
// 建立工作表
const workbook = new ExcelJS.Workbook();

// 設定工作表屬性
workbook.creator = 'Ruyut';
workbook.lastModifiedBy = 'Ruyut';
workbook.created = new Date(2023, 4, 8);
workbook.modified = new Date(2023, 4, 8);
workbook.lastPrinted = new Date(2023, 4, 8);

// 建立活頁簿1
const worksheet = workbook.addWorksheet('活頁簿1');

// 設定內容:
worksheet.getCell('A1').value = 'A';
worksheet.getCell('B1').value = 'B';

worksheet.getCell(2, 1).value = 'A-2'; // (y, x)

// 跨欄置中
worksheet.mergeCells(1, 3, 1, 4)// (y1, x1, y2, x2)
worksheet.getCell(1, 3).value = 'C1&D1'; // (y, x)
    

公式

formula 設定的是公式內容,但是在 ExcelJS 中取得結果,如果使用 .result 會是 undefined ,所以可以在設定公式時順便加上 result ,方便在 JavaScript 中也可以讀取到該值,但是若不設定 result 也不影響輸出
    
worksheet.getCell('A5').value = 1;
worksheet.getCell('A6').value = 2;
worksheet.getCell('A7').value = { formula: 'A5+A6', result: 3 };
console.log(worksheet.getCell('A7').result); // 3
    

輸出 xlsx

原先有其他的下載檔案方式,不過在筆者的測試下都無法正常下載,目前筆者是使用 FileSaver,需要多增加一個 CDN:
    
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.0/FileSaver.min.js"></script>
    

輸出 xlsx:
    
workbook.xlsx.writeBuffer().then(function (buffer) {
    saveAs(
        new Blob([buffer], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),
        'test1.xlsx'
    );
});
    

workbook 為工作表物件,檔名則是 test1.xlsx

參考資料:
Github - exceljs / exceljs

留言