nodejs獲取formdata上傳的文件及解析excel問題


一、獲取formdata上傳的文件

  問題:使用 koa-bodyparser 可以解析post提交的問題,但是發現獲取不到formdata上傳的文件。

  后經查資料,改用 koa-body 解決:

const koaBody = require('koa-body');

app.use(koaBody({
  multipart: true,
  formidable: {
    maxFileSize: 200 * 1024 * 1024 // 設置上傳文件大小最大限制,默認2M
  }
}))

  然后就可以在 ctx.request.files 里面獲取到上傳的 文件信息了。ctx.request.files 為一個對象,里面包含一個 file 字段(為你前端上傳定義的值),值為文件信息,主要是文件name和path,path為臨時存儲路徑。

二、解析xlsx文件信息

  主要使用模塊 node-xlsx :npm i xlsx --save

1、加載模塊

  使用模塊:fs--主要用於寫入文件;node-xlsx主要用於轉換xlsx數據和讀取xlsx的文件數據;

const fs = require('fs')
const xlsx = require('node-xlsx');      // 讀寫xlsx的插件

  

2、讀取功能

  讀取功能相對簡單,直接使用模塊的 prase(路徑) 方法就能讀取

let list = xlsx.parse("./doc/hello.xlsx");

  

返回結果,name:表名,data:二維數組。(由於Excel以表格的形式表示,因此表格的數據都是通過二維數組進行接收。)

  需要注意的是:data里的第一行數組為表頭的信息

[
  { name: 'firstSheet', data: [ [Array], [Array] ] },
  { name: 'secondSheet', data: [ [Array], [Array] ] }
]

  

3、寫入功能

  寫入功能,對應的寫入數據與上面讀取功能的返回格式需要一致,以數組的形式,name:表名,data:二維數組(Excel每行每列的數據)

  如下面代碼,生成一個Excel文件,分別兩張表,表名分別是firstSheet,secondSheet

let xlsxObj = [
    {
        name: 'firstSheet',
        data: [
            [1, 2, 3],
            [4, 5, 6]
        ],
    },
    {
        name: 'secondSheet',
        data: [
            [7, 8, 9],
            [10, 1, 12]
        ],
    }
]

  

生成Excel文件:

  fs.writeFileSync(路徑,Buffer數據)

  xlsx.build(xlsxObj) 會將數組轉換為Buffer數據

  執行下面代碼就會生成對應的Excel文件

fs.writeFileSync('./doc/hello.xlsx', xlsx.build(xlsxObj), "binary");

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM