最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用ExcelJS快速處理Node.js爬蟲數(shù)據(jù)

 更新時間:2024年01月29日 17:02:33   作者:萌萌噠の瑞萌萌  
Excel.js是一個強大的JavaScript庫,它提供了方法處理Excel文件,例如創(chuàng)建和編輯工作簿、讀取和寫入數(shù)據(jù)、處理行和列、設(shè)置樣式、導入和導出數(shù)據(jù)等,本文介紹使用ExcelJS快速處理Node.js爬蟲數(shù)據(jù)的方法,一起看看吧

什么是ExcelJS

ExcelJS是一個用于處理Excel文件的JavaScript庫。它可以讓你使用JavaScript創(chuàng)建、讀取和修改Excel文件。

以下是ExcelJS的一些主要特點:

  • 支持xlsx、xlsm、xlsb、xls格式的Excel文件。
  • 可以創(chuàng)建和修改工作表、單元格、行和列。
  • 可以設(shè)置單元格樣式、字體、背景顏色等。
  • 可以設(shè)置工作表的打印選項。
  • 可以將Excel文件保存到本地或者下載到瀏覽器中。
  • 支持流式寫入大型Excel文件,以避免內(nèi)存限制問題。

我們使用ExcelJS可以輕松地將數(shù)據(jù)轉(zhuǎn)換為Excel文件,并且可以通過代碼自動化地創(chuàng)建和修改Excel文件。

ExcelJS的基本使用

安裝ExcelJS

在命令行中使用命令來安裝Excel.js

npm install exceljs

創(chuàng)建工作簿

Excel.js庫提供了創(chuàng)建新的工作簿、打開已有的工作簿以及保存工作簿的方法。

首先我們需要引入Excel.js庫:

const ExcelJS = require('exceljs');

接著,我們可以使用以下代碼創(chuàng)建一個新的工作簿:

const workbook = new ExcelJS.Workbook();

這個代碼將會創(chuàng)建一個空的工作簿。我們可以通過以下代碼添加一個新的工作表:

const worksheet = workbook.addWorksheet('Sheet1');

這個代碼將會在工作簿中添加一個名為’Sheet1’的新工作表。我們也可以使用以下代碼獲取已有的工作表:

const worksheet = workbook.getWorksheet('Sheet1');

這個代碼將會獲取名為’Sheet1’的工作表。如果工作簿中不存在這個工作表,那么這個代碼將會返回undefined。

在創(chuàng)建新的工作表時,我們可以指定一些選項來控制新工作表的行數(shù)、列數(shù)、列寬和行高等,例如:

const options = {
    pageSetup: {paperSize: 9, orientation: 'landscape'},
    properties: {tabColor: {argb:'FFC0000'}}
};
const worksheet = workbook.addWorksheet('Sheet1', options);

這個代碼將會創(chuàng)建一個名為’Sheet1’的新工作表,并設(shè)置紙張大小為’A4’、方向為’橫向’,以及選項卡顏色為橙色。

除此之外,我們還可以使用以下代碼刪除一個已有的工作表:

workbook.removeWorksheet(worksheet);

這個代碼將會刪除名為’Sheet1’的工作表。需要注意的是,如果工作簿中只剩下一個工作表,那么這個工作表是不能被刪除的。

最后我們需要使用以下代碼保存工作簿:

workbook.xlsx.writeFile('example.xlsx')
    .then(function() {
        console.log('文件已保存');
    });

這個代碼將會把工作簿保存為’example.xlsx’文件。需要注意的是,Excel.js庫支持保存為多種格式,包括.xlsx、.xls、.csv等。

操作單元格

Excel.js庫提供了一系列方法來操作單元格,例如獲取單元格、設(shè)置單元格值、合并單元格和設(shè)置單元格樣式等

首先我們可以使用以下代碼創(chuàng)建一個新的工作簿和工作表:

const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Sheet1');

獲取單元格

我們可以使用以下代碼獲取一個單元格:

const cell = worksheet.getCell('A1');

這個代碼將會獲取’Sheet1’工作表中的A1單元格。我們也可以使用以下代碼獲取一個單元格的行和列:

const cell = worksheet.getRow(1).getCell(1);

這個代碼將會獲取’Sheet1’工作表中的A1單元格。

設(shè)置單元格值

然后我們可以使用以下代碼設(shè)置一個單元格的值:

worksheet.getCell('A1').value = 'Hello, World!';

這個代碼將會在’Sheet1’工作表中的A1單元格設(shè)置值為’Hello, World!’

Excel.js庫支持各種數(shù)據(jù)類型,包括字符串、數(shù)字、日期和布爾值等。

合并單元格

我們可以使用以下代碼合并一個區(qū)域內(nèi)的單元格:

worksheet.mergeCells('B2:C3');

這個代碼將會合并’Sheet1’工作表中B2到C3區(qū)域內(nèi)的所有單元格。

需要注意的是,合并單元格時,只有左上角的單元格保留了原有的值,其他單元格的值都被清空了。

設(shè)置單元格樣式

我們可以使用以下代碼設(shè)置一個單元格的樣式:

worksheet.getCell('A1').font = {bold: true};
worksheet.getCell('A1').fill = {type: 'pattern', pattern: 'solid', fgColor: {argb: 'FFFF0000'}};
worksheet.getCell('A1').border = {top: {style: 'thin'}, left: {style: 'thin'}, bottom: {style: 'thin'}, right: {style: 'thin'}};
worksheet.getCell('A1').alignment = {horizontal: 'center', vertical: 'middle'};

這個代碼將會設(shè)置’Sheet1’工作表中的A1單元格的字體加粗、背景顏色為紅色、邊框為實線細邊框、水平居中和垂直居中。

讀取和寫入數(shù)據(jù)

讀取工作表中的數(shù)據(jù)

我們可以使用以下代碼讀取工作表中的數(shù)據(jù):

worksheet.eachRow({ includeEmpty: false }, function(row, rowNumber) {
    console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values));
});

上述代碼將會遍歷’Sheet1’工作表中的每一行并打印出每一行的值,這里我們使用了includeEmpty選項來忽略空行。

除此之外,我們還可以使用以下代碼獲取’Sheet1’工作表中的A1單元格的值:

const data = [
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 },
    { name: 'Jim', age: 40 }
];
worksheet.addRows(data);

寫入數(shù)據(jù)到工作表中

我們可以使用以下代碼將數(shù)據(jù)寫入到工作表中:

worksheet.getColumn('A').values = [1, 2, 3, 4, 5];

這個代碼將會在’Sheet1’工作表中的A列寫入1到5這五個數(shù)字。

除此之外,我們還可以使用以下代碼將一個對象數(shù)組寫入到工作表中:

const data = [
    { name: 'John', age: 30 },
    { name: 'Jane', age: 25 },
    { name: 'Jim', age: 40 }
];
worksheet.addRows(data);

這個代碼將會在’Sheet1’工作表中添加三行數(shù)據(jù),每一行包括’name’和’age’兩個字段

處理行和列

獲取行和列

我們可以使用以下代碼獲取工作表中的行和列:

const row = worksheet.getRow(1);
const column = worksheet.getColumn('A');

這個代碼將會獲取’Sheet1’工作表中的第一行和第一列。

我們也可以使用以下代碼獲取指定區(qū)域內(nèi)的行和列:

const rows = worksheet.getRows(1, 5);
const columns = worksheet.getColumns('A', 'C');

這個代碼將會獲取’Sheet1’工作表中第1到5行和A到C列。

添加行和列

我們可以使用以下代碼添加新的行和列:

const row = worksheet.addRow([1, 2, 3, 4, 5]);
const column = worksheet.addColumn(['A', 'B', 'C', 'D', 'E']);

這個代碼將會在’Sheet1’工作表中添加一行和一列,并分別設(shè)置它們的值為1到5和A到E。

刪除行和列

我們可以使用以下代碼刪除指定的行和列:

worksheet.spliceRows(1, 5);
worksheet.spliceColumns('A', 2);

這個代碼將會刪除’Sheet1’工作表中第1到5行和A到B列。

設(shè)置行高和列寬

我們可以使用以下代碼設(shè)置指定行的高度和指定列的寬度:

worksheet.getRow(1).height = 30;
worksheet.getColumn('A').width = 20;

這個代碼將會設(shè)置’Sheet1’工作表中第一行的高度為30像素,第一列的寬度為20字符。

隱藏行和列

我們可以使用以下代碼隱藏工作表中的行和列:

worksheet.getRow(1).hidden = true;
worksheet.getColumn('A').hidden = true;

這個代碼將會隱藏’Sheet1’工作表中第一行和第一列。

凍結(jié)窗格

我們可以使用以下代碼凍結(jié)工作表中的窗格:

worksheet.views = [
    {state: 'frozen', xSplit: 1, ySplit: 1}
];

這個代碼將會凍結(jié)’Sheet1’工作表中第一行和第一列。

需要注意的是,xSplit和ySplit選項指定了凍結(jié)窗格的位置,它們的值從1開始。

導入和導出數(shù)據(jù)

Excel.js庫提供了一系列方法來導入和導出Excel文件中的數(shù)據(jù),例如從文件讀取Excel數(shù)據(jù)、將數(shù)據(jù)寫入到Excel文件中以及將Excel文件轉(zhuǎn)換為其他格式等。

從文件讀取Excel數(shù)據(jù)

const workbook = new ExcelJS.Workbook();
workbook.xlsx.readFile('path/to/file.xlsx')
    .then(function() {
        const worksheet = workbook.getWorksheet('Sheet1');
        worksheet.eachRow({ includeEmpty: false }, function(row, rowNumber) {
            console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values));
        });
    });

這個代碼將會從’path/to/file.xlsx’文件中讀取數(shù)據(jù),并打印出’Sheet1’工作表中每一行的值。

將數(shù)據(jù)寫入到Excel文件中

const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Sheet1');
worksheet.addRow([1, 2, 3, 4, 5]);
worksheet.addRow(['A', 'B', 'C', 'D', 'E']);
workbook.xlsx.writeFile('path/to/file.xlsx')
    .then(function() {
        console.log('File is written successfully!');
    });

這個代碼將會創(chuàng)建一個新的工作簿和工作表,然后向’Sheet1’工作表中添加兩行數(shù)據(jù),最后它將會將這個工作簿寫入到’path/to/file.xlsx’文件中。

將Excel文件轉(zhuǎn)換為其他格式

const workbook = new ExcelJS.Workbook();
workbook.xlsx.readFile('path/to/file.xlsx')
    .then(function() {
        workbook.csv.writeFile('path/to/file.csv')
            .then(function() {
                console.log('CSV file is written successfully!');
            });
    });

這個代碼將會從’path/to/file.xlsx’文件中讀取數(shù)據(jù),并將其轉(zhuǎn)換為CSV格式,然后它將會將這個CSV文件寫入到’path/to/file.csv’文件中。除此之外,Excel.js庫還支持將Excel文件轉(zhuǎn)換為JSON、HTML、PDF等各種格式。

ExcelJS實戰(zhàn)

我們之前曾經(jīng)爬過掘金小冊的所有數(shù)據(jù)并且存到了本地的JSON文件里

沒有學過的同學可以看一下這一篇Nodejs中使用puppeteer控制瀏覽器中視頻播放功能

這里我們直接來看生成的JSON文件:

我們這里就來把這些數(shù)據(jù)全部寫入 Excel 表并導出文件

相信大家有了前面對ExcelJS的了解,這里的代碼就非常簡單了

首先我們新建一個 excel 工作簿,然后創(chuàng)建一個新的工作表,我們給這個工作表添加自定義表頭,接下來就是把數(shù)據(jù)寫入excel表并且設(shè)置一些單元格的樣式,最后我們將工作簿保存然后導出Excel文件

具體實現(xiàn)請看下面的代碼:

const ExcelJS = require('exceljs');
const bookData = require('../juejin/xiaoce.json')
// 新建一個 excel 工作簿
const workbook = new ExcelJS.Workbook();
// 創(chuàng)建一個新的工作表
const worksheet = workbook.addWorksheet('Sheet1');
// 添加表頭
worksheet.columns = [
  { header: '小冊名稱', key: 'title', width: 45 }, // 設(shè)置列寬
  { header: '小冊簡介', key: 'desc', width: 120 }, // 設(shè)置列寬
  { header: '小冊作者', key: 'author', width: 16 }, // 設(shè)置列寬
  { header: '小冊價格', key: 'price', width: 18 }, // 設(shè)置列寬
];
// 添加數(shù)據(jù)
worksheet.addRows(bookData);
// 第一行字體加粗加大
worksheet.getRow(1).font = {
    bold: true,
    size: 14
};
// 第一行單元格居中
worksheet.getRow(1).alignment = {
    vertical: 'middle',
    horizontal: 'center'
};
// 第一列單元格居中
worksheet.getColumn(1).alignment = {
    vertical: 'middle',
    horizontal: 'center'
};
// 第三列單元格居中
worksheet.getColumn(3).alignment = {
    vertical: 'middle',
    horizontal: 'center'
};
// 第四列單元格居中
worksheet.getColumn(4).alignment = {
    vertical: 'middle',
    horizontal: 'center'
};
// 將工作簿保存到文件
workbook.xlsx.writeFile('juejinBook.xlsx')
  .then(() => {
    console.log('Excel文件已保存');
  })
  .catch((error) => {
    console.log('保存Excel文件時出錯:', error);
  });

運行程序,不出意外的話控制臺會出現(xiàn)“Excel文件已保存”,我們發(fā)現(xiàn)目錄下確實多了一個excel文件:

然后我們來打開生成的Excel文件,看看里面是不是我們要的json文件里爬取到的數(shù)據(jù):

沒有問題!所有的小冊數(shù)據(jù)全部寫入了excel文件,并且單元格的樣式也是我們想要的。

總結(jié)

Excel.js是一個強大的JavaScript庫,它提供了一系列方法來處理Excel文件,例如創(chuàng)建和編輯工作簿、讀取和寫入數(shù)據(jù)、處理行和列、設(shè)置樣式、導入和導出數(shù)據(jù)等。

使用Excel.js,我們可以輕松地創(chuàng)建和編輯Excel文件,以及從Excel文件中讀取和寫入數(shù)據(jù)。

在使用Excel.js時,我們需要注意以下幾點:

  • Excel.js庫需要安裝并引入到我們的項目中。
  • 我們需要創(chuàng)建一個新的工作簿和工作表來存儲數(shù)據(jù)。
  • 我們可以使用一系列方法來讀取和寫入工作表中的數(shù)據(jù),例如eachRow()、getCell()、addRow()、addColumn()等。
  • 我們可以使用一系列方法來處理工作表中的行和列,例如getRow()、getColumn()、addRow()、addColumn()、spliceRows()、spliceColumns()等。
  • 我們可以使用一系列方法來設(shè)置工作表中的行和列的樣式,例如設(shè)置行高和列寬、設(shè)置單元格邊框和背景色等。
  • 我們可以使用一系列方法來導入和導出Excel文件中的數(shù)據(jù),例如從文件讀取Excel數(shù)據(jù)、將數(shù)據(jù)寫入到Excel文件中以及將Excel文件轉(zhuǎn)換為其他格式等。

最后我們還帶大家寫了一個Excel.js的實戰(zhàn)項目來生成了爬取到的掘金小冊Excel文件

如果想深入了解ExcelJS,請查看官方文檔:https://github.com/exceljs/exceljs/blob/master/README_zh.md

相關(guān)文章

  • node.js中使用node-schedule實現(xiàn)定時任務(wù)實例

    node.js中使用node-schedule實現(xiàn)定時任務(wù)實例

    這篇文章主要介紹了node.js中使用node-schedule實現(xiàn)定時任務(wù)實例,包括安裝方法和4種使用例子,需要的朋友可以參考下
    2014-06-06
  • electron安裝報錯終極解決辦法詳細講解

    electron安裝報錯終極解決辦法詳細講解

    當使用npm安裝electron時,有時候會遇到各種各樣的錯誤,如網(wǎng)絡(luò)錯誤、權(quán)限錯誤等等,這篇文章主要給大家介紹了關(guān)于electron安裝報錯終極解決辦法的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • Koa從零搭建到Api實現(xiàn)項目的搭建方法

    Koa從零搭建到Api實現(xiàn)項目的搭建方法

    這篇文章主要介紹了Koa從零搭建到Api實現(xiàn)項目的搭建方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Node.js中Express生成Token的實現(xiàn)方法

    Node.js中Express生成Token的實現(xiàn)方法

    本文介紹了在Express中生成和使用Token進行用戶認證的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • 詳解兩個Node.js進程是如何通信

    詳解兩個Node.js進程是如何通信

    進程間通信是是Node.js的一個十分重要的部分,這篇文章主要給大家介紹了關(guān)于兩個Node.js進程是如何通信的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • node.js文件上傳重命名以及移動位置的示例代碼

    node.js文件上傳重命名以及移動位置的示例代碼

    本篇文章主要介紹了node.js文件上傳重命名以及移動位置的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Node.js常用三大模塊之path模塊

    Node.js常用三大模塊之path模塊

    在node.js中常用的三大模塊中還有一個是path模塊,主要是為了便利用戶處理路徑問題,如果我們在引入文件的時候經(jīng)常會受到../和./的干擾,那么這個path模塊將會很好的幫助你
    2022-09-09
  • 深入理解 Koa 框架中間件原理

    深入理解 Koa 框架中間件原理

    koa是目前node里最流行的web框架。這篇文章主要介紹了理解 Koa 框架中間件原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • 基于Express實現(xiàn)遞歸遍歷文件和CRUD操作

    基于Express實現(xiàn)遞歸遍歷文件和CRUD操作

    在現(xiàn)代的?Web?應(yīng)用開發(fā)中,文件管理是一個常見而重要的需求,所以本文就來講講如何利用?Express?框架,在遞歸遍歷文件之后實現(xiàn)強大的?CRUD?操作,構(gòu)建一個功能完善的文件管理系統(tǒng),感興趣的可以了解一下
    2023-06-06
  • nodejs實現(xiàn)用戶登錄路由功能

    nodejs實現(xiàn)用戶登錄路由功能

    這篇文章主要介紹了nodejs中實現(xiàn)用戶登錄路由功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05

最新評論

彰化市| 阳东县| 石河子市| 响水县| 陵水| 塔城市| 凤山县| 陆川县| 景德镇市| 达拉特旗| 绵竹市| 曲靖市| 景宁| 剑川县| 黄石市| 灵璧县| 青河县| 台东市| 新野县| 巨鹿县| 天长市| 南川市| 浠水县| 奇台县| 巴彦县| 沁水县| 通渭县| 历史| 文成县| 图们市| 绥棱县| 大厂| 腾冲县| 肇源县| 盐津县| 固镇县| 行唐县| 通山县| 乳源| 通化县| 绵阳市|