如何在Node.js中讀取和寫入Excel檔案?
ExcelJS是一個JavaScript庫,它提供了一個方便的解決方案來處理'.xlsx'檔案,允許你使用Node.js以程式設計方式讀取、操作和儲存資料。
在本教程中,我們將逐步講解如何在Node.js中使用ExcelJS讀取和寫入Excel檔案。你將學習如何初始化工作簿、從現有的Excel檔案讀取資料、動態構建新的工作表以及儲存更新。每個部分都包含實際示例,以幫助你在現實場景中應用這些概念。
前提條件
- 你應該具備JavaScript的基礎知識。
- 你應該具備Node.js的基礎知識。
設定環境
讓我們設定專案結構並安裝必要的庫。按照以下步驟準備你的Node.js環境:
步驟1:建立一個新目錄
首先,為專案建立一個新目錄。我們將它命名為excel-read-write,但你可以隨意命名。
mkdir excel-read-write cd excel-read-write
步驟2:初始化一個Node.js專案
執行以下命令,使用預設的package.json檔案初始化一個新的Node.js專案:
npm init -y
步驟3:安裝exceljs庫
要處理Excel檔案,請安裝exceljs庫。
npm install exceljs
步驟4:建立一個應用程式檔案
為方便起見,建立一個名為app.js的檔案,我們將在其中編寫程式碼。
touch app.js
從Excel檔案讀取資料
讓我們首先從現有的Excel檔案讀取資料。在這個場景中,假設你有一個名為country.xlsx的Excel檔案,其中包含國家列表及其人口。我們的目標是載入此檔案,讀取其內容並顯示每一行的資訊。
讓我們開始編寫我們的app.js檔案。
步驟1:匯入ExcelJS並初始化工作簿
首先匯入exceljs並建立一個新的Workbook例項。
const ExcelJS = require("exceljs");
const workbook = new ExcelJS.Workbook();
步驟2:讀取檔案並訪問資料
我們將使用以下資料。你可以將資料儲存為country.xlsx。
country.xlsx
| 國家 | 人口 |
| 奈及利亞 | 2億 |
| 迦納 | 1000萬 |
| 塞內加爾 | 500萬 |
使用'workbook.xlsx.readFile()'載入'country.xlsx'。載入後,你可以按索引或名稱訪問各個工作表。
workbook.xlsx.readFile("country.xlsx").then(() => {
const worksheet = workbook.getWorksheet(1); // Get the first sheet
// Iterate through each row in the worksheet
worksheet.eachRow((row, rowNumber) => {
console.log(`Row ${rowNumber}: ${row.values}`);
});
});
輸出

將資料寫入新的Excel檔案
現在我們已經介紹了讀取資料,讓我們來探討如何將資料寫入新的Excel檔案。假設你想建立一個報告,總結員工的角色、薪水和工作年限。
- 建立新的工作表:使用'workbook.addWorksheet()'建立一個新的工作表。
- 定義列和新增行:設定帶標題和鍵的列。然後可以將每一行新增為具有鍵值對的物件。
- 儲存檔案:使用'writeFile()'將工作簿儲存到新檔案,例如'output.xlsx'。
以下是在app.js中設定此程式碼的程式碼:
const ExcelJS = require("exceljs");
const workbook = new ExcelJS.Workbook();
// Add a new worksheet named "Sheet1"
const worksheet = workbook.addWorksheet("Sheet1");
// Define columns for the worksheet
worksheet.columns = [
{ header: "Job", key: "job", width: 10 },
{ header: "Salary", key: "salary", width: 10 },
{ header: "Years", key: "years", width: 5 },
];
// Add rows to the worksheet
worksheet.addRow({ job: "Engineer", salary: 50000, years: 5 });
worksheet.addRow({ job: "Designer", salary: 40000, years: 3 });
worksheet.addRow({ job: "Manager", salary: 60000, years: 10 });
// Save the workbook to a new file
workbook.xlsx.writeFile("output.xlsx").then(() => {
console.log("File created successfully");
});
以下是關鍵步驟的細分:
- addWorksheet("Sheet1")建立一個名為"Sheet1"的新工作表。
- worksheet.columns定義標題和鍵。每個鍵對映到一個列標題,而width設定檔案中列的寬度。
- addRow()根據指定的鍵新增各個行。
執行此程式碼後,你將擁有一個名為output.xlsx的檔案,其中包含一個名為Sheet1的新工作表,其中包含你指定的資料。

輸出

完整程式
總而言之,以下是讀取country.xlsx中的資料並將新資料寫入output.xlsx的完整程式碼。
const ExcelJS = require("exceljs");
// Create a new Workbook
const workbook = new ExcelJS.Workbook();
// Read existing data
workbook.xlsx.readFile("country.xlsx").then(() => {
const worksheet = workbook.getWorksheet(1); // Get the first sheet
worksheet.eachRow((row, rowNumber) => {
console.log(`Row ${rowNumber}: ${row.values}`);
});
});
// Add new data to a different worksheet
const newWorkbook = new ExcelJS.Workbook();
const newWorksheet = newWorkbook.addWorksheet("Sheet1");
// Define columns
newWorksheet.columns = [
{ header: "Job", key: "job", width: 10 },
{ header: "Salary", key: "salary", width: 10 },
{ header: "Years", key: "years", width: 5 },
];
// Insert rows
newWorksheet.addRow({ job: "Engineer", salary: 50000, years: 5 });
newWorksheet.addRow({ job: "Designer", salary: 40000, years: 3 });
newWorksheet.addRow({ job: "Manager", salary: 60000, years: 10 });
// Save new workbook
newWorkbook.xlsx.writeFile("output.xlsx").then(() => {
console.log("File created successfully");
});
結論
在本教程中,我們介紹瞭如何使用'exceljs'庫在Node.js中讀取和寫入Excel檔案。你學習瞭如何初始化工作簿,從現有的Excel檔案讀取資料,以及動態新增和配置工作表、列和行。我們還介紹了將更新儲存到新Excel檔案的過程。
在Node.js中處理Excel檔案為處理資料提供了許多可能性,例如生成報告、處理來自外部系統的資料或匯出應用程式的結果。透過利用'exceljs',你可以構建強大的資料驅動應用程式並簡化系統之間的資料交換。本教程為在Node.js中使用Excel奠定了基礎,你可以根據更復雜的使用案例進行擴充套件。
資料結構
網路
關係型資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP