nodejs 匯出Excel和解析匯入的Excel

2022-05-21 18:24:14 字數 3923 閱讀 3527

用的是koa2框架,但好好處理一下,用express框架也是可以的。匯出的excel是xlsx的格式,解析匯入excel的有xlsx和csv格式。通常匯入excel是要上傳的,然後獲取檔案的路徑,這裡省略。強烈不建議匯入的excel直接儲存到資料庫,建議將資料發到頁面上確認沒問題,再儲存,防止匯入垃圾資料。匯入的excel裡也不要什麼樣式,防止不符合解析規範。建議用xlsx格式的excel匯入,解析比較簡單。

我的excel內容

index.html 的**

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>excel的匯入匯出

title

>

<

script

src=""

integrity

="sha256-zosebrlbnqzlpnkikedrpv7loy9c27hhq+xp8a4mxaq="

crossorigin

="anonymous"

>

script

>

head

>

<

body

>

<

hr/>

匯出excel:

<

button

id="exportexcel"

>提交

button

>

<

hr/>

匯入xlsx格式:

<

button

id="importexcelxlsx"

>提交

button

>

<

hr/>

匯入csv格式:

<

button

id="importexcecsv"

>提交

button

>

<

script

>

$(function

() );

$("#importexcelxlsx

").on(

"click",

function

() ,

success :

function

(data)

});});

$("#importexcecsv

").on(

"click",

function

() ,

success :

function

(data)

});});

})script

>

body

>

html

>

const koa = require("koa");

const router = require("koa-router")();

const fs=require("fs");

const nodeexcel = require('excel-export');

const csv=require('csv');

const dict = require('gbk-dict').init();//

呼叫gbk-dict中的init這個方法

const xlsx = require('node-xlsx');

koa();

router.get("/",(ctx)=>);

//匯出excel,xlsx格式

router.get('/exportexcel',async (ctx) =>,,,

,];return

exceldata;

}//匯出

async function

exportdata(v) ;

conf.name = "mysheet";//

**名 let alldata = new

array();

for(let i = 0;i)

//決定列名和型別

conf.cols =[,,,];

conf.rows = alldata;//

填充資料

let result =nodeexcel.execute(conf);

//最後3行express框架是這樣寫

////

res.setheader("content-disposition", "attachment; filename=" + "report.xlsx");

'binary');

let data = new buffer(result,'binary');

ctx.set("content-disposition", "attachment; filename=" + "report.xlsx");

ctx.body=data;

}let r=await readydata();

r=await exportdata(r);

});//

匯入excel,xlsx格式

const xlsxfile="e:/xlsx格式.xlsx";

router.post('/importexcelxlsx',async (ctx) =>);

}async

function

readdata(v) ]

console.log("資料 = ",v[0]);//

資料 =

console.log("要上傳的資料 = ",v[0].data);//

要上傳的資料 = [ [ '姓名', '年齡' ], [ '張三', 20 ], [ '李四', 30 ] ]

ctx.body=v;

}let r=await analysisdata();

r=await readdata(r);

});//

匯入excel,csv格式

const csvfile="e:/csv格式.csv";

router.post('/importexcelcsv',async (ctx) =>);//

呼叫csv模組的parse方法

let input = fs.createreadstream(csvfile);//

呼叫fs模組的createreadstream方法

input.on("data",function

(data));

input.on("close",function

());

//讀取操作的快取裝不下,只能分成幾次傳送,每次傳送會觸發乙個data事件,傳送結束會觸發end事件

parser.on('readable',function

() });

parser.on('finish',function

() )

});}

async

function

readdata(v)

let r=await analysisdata();

r=await readdata(r);

});console.log("listen on 3000");

匯出的excel

nodejs實現 excel報表的匯出。

主要涉及技術點如下nodejs ejs express mysql node xlsl模組。為了方便大家閱讀,我特地在 裡寫了詳細注釋 再上傳 在之前需要npm install 安裝所需要的模組別忘了哦。不囉嗦了直接上圖 sql指令碼如下create table doctor user uuid v...

nodejs讀寫excel內容

支援讀寫excel的node.js模組 node xlsx 基於node.js解析excel檔案資料及生成excel檔案,僅支援xlsx格式檔案 excel parser 基於node.js解析excel檔案資料,支援xls及xlsx格式檔案 excel export 基於node.js將資料生成匯...

C 匯出Excel 匯出資料到Excel模板檔案裡

using excel microsoft.office.interop.excel using system.reflection missing 開啟模板檔案,得到workbook物件 workbook excel.workbooks.open templatepath,missing,miss...