欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js實(shí)現(xiàn)讀取Excel數(shù)據(jù)并插入MySQL

 更新時(shí)間:2023年11月10日 14:04:21   作者:百萬蹄蹄向前沖  
這篇文章主要為大家詳細(xì)介紹了Node.js如何實(shí)現(xiàn)讀取Excel數(shù)據(jù)并插入到MySQL數(shù)據(jù)庫中,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

使用最新的MySQL2模塊,mysql2是最新的Node.js調(diào)用MySQL驅(qū)動(dòng)

本文從EXCEL中讀取數(shù)據(jù),然后使用一條語句將數(shù)據(jù)插入到MySQL中

INSERT INTO 學(xué)生 (序號, 學(xué)號, 姓名,性別)
    VALUES
    ${str}

npm包地址 www.npmjs.com/package/mysql2#mysql-2

mysql2中文文檔:github.com/sidorares/node-mysql2/blob/HEAD/documentation/zh-cn/

一、代碼執(zhí)行效果

二、讀取EXCEL數(shù)據(jù)

目標(biāo)得到:(1,22503,'王','女'),(2,22503,'葉甜','女')格式的數(shù)據(jù)

主函數(shù)代碼:

const ExcelJS = require('exceljs')
//引入自定義模塊myFun
const my = require('./my.js')
let 工具 = new my() 
讀取EXCEL()
async function 讀取EXCEL() {
    const 工作簿 = new ExcelJS.Workbook()
    await 工作簿.xlsx.readFile('EXCEL/生菜前端.xlsx') // 替換為您的Excel文件路徑 
    const 工作表 = 工作簿.worksheets[6]
    console.log( 工具.getStr(工作表) )
}

讀取一個(gè)Excel文件并打印一內(nèi)容。具體來說,代碼做了以下事情:

1.引入exceljs庫:這是一個(gè)用于處理Excel文件的JavaScript庫。

2.引入自定義模塊my.js:一個(gè)my類。

3.調(diào)用讀取EXCEL函數(shù):這是一個(gè)異步函數(shù),它執(zhí)行以下操作:

1)創(chuàng)建一個(gè)新的ExcelJS工作簿對象。

2) 使用readFile方法異步讀取指定路徑的Excel文件。這個(gè)路徑是EXCEL/生菜前端.xlsx,你需要替換為你實(shí)際的Excel文件路徑。

3)獲取工作簿的第7個(gè)工作表(在計(jì)算機(jī)中,索引從0開始,所以worksheets[6]指的是第7個(gè)工作表)。
使用工具.getStr方法處理工作表,并將結(jié)果打印到控制臺

自定義類代碼:

class my{
    getStr(工作表){
        let str = ''
        let arr = this.to_arr(工作表)
        for(let i=1; i<arr.length  ; i++ ){
            let one = arr[i]
            let 單個(gè)  = `(${one[0]},${one[1]},'${one[2]}','${one[3]}'),`
            str+= 單個(gè)
        }
        str = str.slice(0, -1);
        return str
    }
    to_arr(工作表) {  
        let arr = [] 
        工作表.eachRow((row, rowIndex) => {  
            let rowArr = [] 
            row.eachCell((cell, colIndex) => {  
                rowArr.push(cell.value) 
            }) 
            arr.push(rowArr) 
        }) 
        return arr 
    }
    to_cellObj(工作表){
        let OBJ = {}
        const colArr = ['占位','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
        工作表.eachRow((row,rowIndex) => {
            row.eachCell((cell, colIndex) => {
                let 列名 = colArr[colIndex]
                OBJ[列名+rowIndex] = cell.value
            })
        })
        return OBJ
    }
}
module.exports = my

三、數(shù)據(jù)庫語句

CREATE DATABASE 考勤 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE 考勤;
CREATE TABLE 年級 (  
  id INT  AUTO_INCREMENT, 
  年級 INT, 
  專業(yè) VARCHAR(255),
  行政班名 VARCHAR(500),
  班級編號 VARCHAR(100),
  輔導(dǎo)員 VARCHAR(50),
  PRIMARY KEY(id)
);
CREATE TABLE 課程 (  
  id INT  AUTO_INCREMENT, 
  教室 TEXT, 
  時(shí)段 VARCHAR(255),
  日期 DATE,
  PRIMARY KEY(id)
);
INSERT INTO 課程 
(教室,時(shí)段,日期) 
VALUES 
('615教室','1-4','2023-11-08'),
('606教室','5-8','2023-11-08');
CREATE TABLE 學(xué)生(
  id INT  AUTO_INCREMENT, 
  序號 INT,
  學(xué)號 VARCHAR(100),
  姓名 VARCHAR(200),
  性別 VARCHAR(20),
  QQ VARCHAR(200),
  手機(jī) VARCHAR(200),
  PRIMARY KEY(id)
)
INSERT INTO 學(xué)生 (序號, 學(xué)號, 姓名,性別) VALUES (?, ?, ?, ?, ?)

四、完整代碼

const mysql = require('mysql2/promise');
const ExcelJS = require('exceljs')
//引入自定義模塊myFun
const my = require('./my.js')
let 工具 = new my() 
main()
async function main(){
    let config = {
        host:'localhost', 
        port:3380,
        user: 'root', 
        database: '考勤'
    }
    const pool = await mysql.createPool(config);
    //從EXCEL中讀取值
    const 工作簿 = new ExcelJS.Workbook()
    await 工作簿.xlsx.readFile('EXCEL/生菜前端.xlsx') // 替換為您的Excel文件路徑 
    const 工作表 = 工作簿.worksheets[6]
    let str = 工具.getStr(工作表) 
    let SQL = `
    INSERT INTO 學(xué)生 (序號, 學(xué)號, 姓名,性別) 
    VALUES 
    ${str}
    `
    const result = await pool.execute(SQL);
    console.log(result[0])
}

這段代碼是一個(gè)使用Node.js和ExcelJS庫以及MySQL連接池的異步函數(shù)。

其主要功能是從一個(gè)Excel文件中讀取數(shù)據(jù),然后將這些數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中的一個(gè)表中:

1)let config = {...}:定義了一個(gè)對象,包含了連接到MySQL數(shù)據(jù)庫所需的配置。

2)const pool = await mysql.createPool(config):使用上述配置創(chuàng)建一個(gè)MySQL連接池。mysql2是一個(gè)最新的Node.js驅(qū)動(dòng)mysql數(shù)據(jù)庫模塊。

3)const 工作簿 = new ExcelJS.Workbook():創(chuàng)建一個(gè)新的ExcelJS工作簿對象。

4)await 工作簿.xlsx.readFile('EXCEL/生菜前端.xlsx'):異步讀取指定路徑的Excel文件。你需要替換路徑為你實(shí)際的Excel文件路徑。

5)const 工作表 = 工作簿.worksheets[6]:獲取工作簿中的第7個(gè)工作表(在EXCEL中,工作表索引從0開始)。

6)let str = 工具.getStr(工作表):調(diào)用自定義模塊my.js中的getStr方法處理工作表,并將結(jié)果賦值給str。

7) 定義SQL插入語句,其中${str}是之前從Excel文件中讀取的數(shù)據(jù),會(huì)被插入到SQL語句

8)const result = await pool.execute(SQL):使用連接池執(zhí)行SQL插入語句。

9)console.log(result[0]):打印插入操作的結(jié)果。

注意:此代碼中使用的MySQL語法可能存在問題,特別是使用字符串模板插入多個(gè)值。這可能會(huì)導(dǎo)致SQL注入問題。為了防止這種情況,建議使用參數(shù)化查詢或預(yù)編譯語句。同時(shí),請確保工具.getStr方法返回的數(shù)據(jù)格式與SQL插入語句的需求一致。

返回?cái)?shù)據(jù)結(jié)果:

ResultSetHeader {
  fieldCount: 0,
  affectedRows: 46,
  insertId: 95,
  info: 'Records: 46  Duplicates: 0  Warnings: 0',
  serverStatus: 2,
  warningStatus: 0,
  changedRows: 0
}

五、小結(jié)

注意插入語句返回結(jié)果在result[0]。

到此這篇關(guān)于Node.js實(shí)現(xiàn)讀取Excel數(shù)據(jù)并插入MySQL的文章就介紹到這了,更多相關(guān)Node.js讀取Excel數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • node使用request請求的方法

    node使用request請求的方法

    這篇文章主要介紹了node使用request請求的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • node+js搭建時(shí)間服務(wù)器的思路詳解

    node+js搭建時(shí)間服務(wù)器的思路詳解

    這篇文章主要介紹了node+js搭建時(shí)間服務(wù)器,通過本文的學(xué)習(xí)可以了解node的fs模塊怎么讀取數(shù)據(jù)及express怎么搭建服務(wù)器,設(shè)置數(shù)據(jù)接口的,需要的朋友可以參考下
    2022-07-07
  • 詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署

    詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署

    這篇文章主要介紹了NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 用node和express連接mysql實(shí)現(xiàn)登錄注冊的實(shí)現(xiàn)代碼

    用node和express連接mysql實(shí)現(xiàn)登錄注冊的實(shí)現(xiàn)代碼

    本篇文章主要介紹了用node和express連接mysql實(shí)現(xiàn)登錄注冊的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • Node.js管理工具npm的具體使用

    Node.js管理工具npm的具體使用

    NPM是隨同NodeJS一起安裝的包管理工具,允許用戶從NPM服務(wù)器下載別人編寫的第三方包到本地使用,本文主要介紹了Node.js管理工具npm的具體使用,感興趣的可以了解一下
    2023-12-12
  • node連接mysql,并操作mysql方式

    node連接mysql,并操作mysql方式

    這篇文章主要介紹了node連接mysql,并操作mysql方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • node.js?實(shí)現(xiàn)手機(jī)號驗(yàn)證碼登錄功能

    node.js?實(shí)現(xiàn)手機(jī)號驗(yàn)證碼登錄功能

    這篇文章主要介紹了node.js?實(shí)現(xiàn)手機(jī)號驗(yàn)證碼登錄功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 詳解Node.js中單線程限制的有效解決方法

    詳解Node.js中單線程限制的有效解決方法

    Node.js?是一個(gè)基于事件驅(qū)動(dòng)、非阻塞?I/O?模型的?JavaScript?運(yùn)行時(shí)環(huán)境,特別適合構(gòu)建高并發(fā)的網(wǎng)絡(luò)應(yīng)用,本文介紹了幾種解決?Node.js單線程限制的方法,希望對大家有所幫助
    2024-12-12
  • 詳解nodejs的express如何自動(dòng)生成項(xiàng)目框架

    詳解nodejs的express如何自動(dòng)生成項(xiàng)目框架

    本篇文章主要介紹了nodejs的express如何自動(dòng)生成項(xiàng)目框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Node 模塊原理與用法詳解

    Node 模塊原理與用法詳解

    這篇文章主要介紹了Node 模塊原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了node.js模塊基本概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05

最新評論