使用 Excel.js 處理 Excel 檔案
要使用 Excel.js,您需要先將其作為依賴項安裝到專案中。要將 Excel.js 安裝到專案中,您需要執行以下命令 −
npm install exceljs
執行上述命令後,會將 Excel.js 作為依賴項安裝到您的專案中。
本教程中使用的所有示例中,我們都將使用“xlsx”檔案,即 Microsoft Excel 中使用的開放 XML 電子表格檔案。
使用 ExcelJS 單元格
在下面所示的示例中,我們使用 Excel 表格單元格。要獲取特定單元格的引用,我們可以使用 getCell 函式。
請考慮以下程式碼。
// Read Simple Cell Values
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
ws.addRows([
[10, 2, 3, 4, 5],
[6, 11, 8, 9, 10],
[10, 11, 12, 14, 15],
[16, 17, 18, 13, 20]]
);
const valueOne = ws.getCell('B1').value;
console.log(valueOne);
const valueTwo = ws.getCell(1, 1).value;
console.log(valueTwo);
const valueThree = ws.getRow(3).getCell(3).value;
console.log(valueThree);
這裡,我向工作表中新增資料,然後藉助 getCell 函式從單元格中讀取該資料。
有幾個重點需要注意,首先,我們使用以下程式碼片段生成一個新的工作簿。
const wb = new Excel.Workbook();
現在,我們需要在此 Excel 檔案中新增一個新的工作表,為此,我們使用以下程式碼片段。
const ws = wb.addWorksheet('My Sheet');
現在,作為下一步,藉助 **addRows** 向工作表中新增資料,然後使用 **getCell()** 函式提取不同單元格的值。
輸出
執行此程式碼時,會生成以下輸出 −
2 10 12
寫入 Excel 檔案
在此示例中,我們將資料寫入 Excel 檔案。考慮如下所示的程式碼。
const Excel = require('exceljs');
const fileName = 'myexcel.xlsx';
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
ws.getCell('A1').value = 'Mukul Latiyan';
ws.getCell('B1').value = 'Software Developer';
ws.getCell('C1').value = new Date().toLocaleString();
const r3 = ws.getRow(3);
r3.values = [1, 2, 3, 4];
wb.xlsx
.writeFile(fileName)
.then(() => {
console.log('file created');
})
.catch(err => {
console.log(err.message);
});
在此示例中,我們使用 **excel.js** 建立名為 **“myexcel.js”** 的 Excel 檔案。然後,我們將一個名為 **“我的工作表”** 的新工作表新增到 Excel 檔案中。最後,在 **“我的工作表”** 的不同單元格位置插入不同的值。
在第一個示例中,我們一次向一個單元格新增值,然後使用整行新增值,最後插入包含不同整數作為值的陣列。
在此,一旦向工作表新增值,下一步就是能夠在我們的計算機中建立檔案,為此,我們使用 **writeFile()** 方法。
執行此程式碼時,它將建立一個名為 **“myexcel.xlsx”** 的 Excel 檔案,在此檔案中,將包含我們已插入的所有資料。
從 Excel 檔案中讀取資料
在此示例中,我們將嘗試從 Excel 檔案中讀取資料,為此,第一步是使用 **readFile()** 方法,然後我們需要獲取工作表的名稱,然後簡單地使用 **getColumn()** 方法。當我們能夠獲取特定方法時,下一步就是簡單地遍歷該列,我們可以藉助 **eachCell()** 方法來完成此操作。
請考慮以下程式碼。
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const fileName = 'myexcel.xlsx';
wb.xlsx.readFile(fileName).then(() => {
const ws = wb.getWorksheet('My Sheet');
c1.eachCell(c => {
console.log(c.value);
});
const c2 = ws.getColumn(2);
c2.eachCell(c => {
console.log(c.value);
});
}).catch(err => {
console.log(err.message);
});
**eachCell()** 方法將幫助我們遍歷特定列的單元格值,然後我們可以列印這些每個單元格的值。
在上面的示例中,我們在兩列上使用 **eachCell()** 函式,即 **“column 1”** 和 **“column 2”**,然後列印這些列中存在的所有值。
輸出
執行此程式碼時,會生成以下輸出 −
Mukul Latiyan 1 Software Developer 2
使用列
現在,讓我們瞭解一個更復雜的示例,在此示例中,我們將 JSON 資料陣列新增到列中,然後還將新增多行,然後使用 **getColumn()** 和 **eachCell()** 方法獲取一列的每個單元格的值。
請考慮以下程式碼。
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
const headers = [{
header: 'First name',
key: 'fn',
width: 15
},
{
header: 'Last name',
key: 'ln',
width: 15
},
{
header: 'Occupation',
key: 'occ',
width: 15
},
{
header: 'Salary',
key: 'sl',
width: 15
},
]
ws.columns = headers;
ws.addRow(['Mukul', 'Latiyan', 'Software Developer', 1230]);
ws.addRow(['Prince', 'Yadav', 'Driver', 980]);
ws.addRow(['Mayank', 'Agarwal', 'Maali', 770]);
ws.getColumn('fn').eachCell((cell, rn) => {
console.log(cell.value);
});
console.log('--------------');
ws.getColumn('B').eachCell((cell, rn) => {
console.log(cell.value);
});
console.log('--------------');
ws.getColumn(3).eachCell((cell, rn) => {
console.log(cell.value);
});
console.log('--------------');
console.log(`There are ${ws.actualColumnCount} columns`);
在此程式碼中,我們建立了一個名為 **headers** 的陣列,其中包含不同的物件,在每個物件中,我們定義 **header**、**key** 和 **width**,因為這些欄位將定義特定單元格的屬性,然後我們將此 **headers** 陣列分配給 **columns**。
之後,我們將多行新增到這些列,然後在稍後訪問每一列,然後使用 **eachCell()** 方法從特定單元格獲取值。
輸出
執行此程式碼時,它將在終端上生成以下輸出 −
First name Mukul Prince Mayank -------------- Last name Latiyan Yadav Agarwal -------------- Occupation Software Developer Driver Maali -------------- There are 4 columns
使用行
現在,讓我們看看如何在 Excel 上使用特定於行的各個方法。考慮如下所示的程式碼。
const Excel = require('exceljs');
const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet');
const headers = [{
header: 'First name',
key: 'fn',
width: 15
},
{
header: 'Last name',
key: 'ln',
width: 15
},
{
header: 'Occupation',
key: 'occ',
width: 15
},
{
header: 'Salary',
key: 'sl',
width: 15
},
]
ws.columns = headers;
ws.addRow(['Mukul', 'Latiyan', 'Software Developer', 1230]);
ws.addRow(['Prince', 'Yadav', 'Driver', 980]);
ws.addRow(['Mayank', 'Agarwal', 'Maali', 770]);
console.log(`There are ${ws.actualRowCount} rows`);
let rows = ws.getRows(1, 4).values();
for (let row of rows) {
row.eachCell((cell, cn) => {
console.log(cell.value);
});
console.log('--');
}
輸出
執行此程式碼時,它將在終端上生成以下輸出 −
There are 4 rows First name Last name Occupation Salary -- Mukul Latiyan Software Developer 1230 -- Prince Yadav Driver 980 -- Mayank Agarwal Maali 770 --
結論
在本教程中,我們瞭解瞭如何藉助 **Excel.js** 使用 excel 檔案來從單元格、行和列提取值。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言
C++
C#
MongoDB
MySQL
Javascript
PHP