如何在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奠定了基礎,你可以根據更復雜的使用案例進行擴充套件。

更新於:2024年11月5日

瀏覽量:60

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.