1. 程式人生 > >node.js學習筆記(5)——excel-export模組匯出excel表

node.js學習筆記(5)——excel-export模組匯出excel表

一、excel-export模組

生成的表格為xlsx格式,支援多個sheet。本文只介紹一個sheet表的生成。

二、例項

1. 在package.json中引入excel-export模組,使用npm install 命令安裝

2. 在js檔案中寫入var nodeExcel = require('excel-export'); 才可以使用該模組

3. 如果表格內容固定,在js檔案中寫入如下語句(來自官方文件,有刪減)即可實現訪問 localhost:port/Excel 時自動下載xlsx格式的表格

app.get('/Excel', function(req, res){
  	var conf ={};
    conf.name = "mysheet";
  	conf.cols = [{
		caption:'string',
        type:'string',
	},{
		caption:'date',
		type:'date',
	},{
		caption:'bool',
		type:'bool'
	},{
		caption:'number',
		 type:'number'				
  	}];
  	conf.rows = [
 		['pi', new Date(Date.UTC(2013, 4, 1)), true, 3.14],
 		["e", new Date(2012, 4, 1), false, 2.7182],
        ["M&M<>'", new Date(Date.UTC(2013, 6, 9)), false, 1.61803],
        ["null date", null, true, 1.414]  
  	];
  	var result = nodeExcel.execute(conf);
  	res.setHeader('Content-Type', 'application/vnd.openxmlformats');
  	res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx");
  	res.end(result, 'binary');
});

conf相當於單個sheet, conf.name為表名,conf.cols中存放了表頭的內容,conf.rows中存放了主體內容。最後四行程式碼將定義的表寫入response中,實現excel表的下載功能。

4. 使xlsx內容支援中文

注意res.setHeader這兩行程式碼,Content-Type和Content-Disposition決定了訪問該路由時獲取的是要下載的內容。

在Content-Type中加入編碼格式為utf-8即可實現檔案內容支援中文

res.setHeader('Content-Type', 'application/vnd.openxmlformats;charset=utf-8');

5. 使xlsx標題支援中文

在 Content-Disposition 中有filename,定義了檔名。中文檔名可以通過編碼轉化寫入到header中。

var name = encodeURI('測試表');
res.setHeader("Content-Disposition", "attachment; filename=" + name + ".xlsx");

(注:使用同樣的方法命名sheet就失效了,如果有將sheet命名為中文的方法歡迎告知)

6. 表頭寫入變數內容

必須先將conf.cols宣告為陣列才能使用迴圈語句將資料寫入表頭。

conf.cols = [];
var test = ['序號', '學號', '姓名', '專業'];
for(var i=0; i<test.length; i++){
      var temp = {
        caption: test[i],
        type: 'string'
      };
      conf.cols.push(temp);
}

7. 表寫入二維陣列變數內容。

假設從資料庫中取出內容為data,屬性包括id, name, profession並寫入到表中

var array = new Array();
for(var i=0; i<data.length; i++){
      var temp = new Array();
      temp[0] = i+1;
      temp[1] = data[i].id;
      temp[2] = data[i].name;
      temp[3] = data[i].profession;
      array.push(temp);
}
conf.rows = array;

相關推薦

node.js學習筆記(5)——excel-export模組匯出excel

一、excel-export模組 生成的表格為xlsx格式,支援多個sheet。本文只介紹一個sheet表的生成。 二、例項 1. 在package.json中引入excel-export模組,使用npm install 命令安裝 2. 在js檔案中寫入var n

node.js學習筆記(5)--MongoDB下載及安裝

MongoDB 是由C++語言編寫的,是一個開源的文件型資料庫。 MongoDB 將資料儲存為一個文件,資料結構由鍵值(key=>value)對組成。MongoDB 文件類似於 JSON 物件。欄位值可以包含其他文件,陣列及文件陣列。 主要特點 MongoDB的提供了一個面向文件儲存,操作起

Node.js學習筆記5【http伺服器與客戶端】

Node.js標準庫提供了http模組,其中封裝了一個高效的HTTP伺服器和一個簡易的HTTP客戶端。http.Server是一個基於事件的http伺服器,它的核心由Node.js下層C++部分實現,而介面由javascript封裝,兼顧了高效能與簡易性。http.requ

node.js學習筆記——模組與包

1.模組 1.1 模組概述 在node中,一個檔案就是一個模組,每個模組都有自己的作用域。 Node中模組分為兩類:一類是Node提供的模組,稱為核心模組;另一類是使用者編寫的模組,稱為檔案模組。 核心模組在node原始碼的編譯過程中就編譯進了二進位制執行檔案

node.js學習筆記(10)--mysql模組連線mysql資料庫

1.安裝 我們需要一個mysql 和node環境,這裡我自己的電腦沒有安裝mysql,用navicat連的同事的。 注意如果碰到這個 “Host''xxx.xx.xxx.xxx''isnot allowedtoconnectto this MySQL server"

node.js學習筆記(8)--multer模組檔案上傳

1.簡介 multer是一個node.js檔案上傳中介軟體,它是在 busboy的基礎上開發的! multer必須指定 enctype="multipart/form-data". 2.安裝 npm

Node.js學習筆記--fs模組

1. fs.readFile(path,callback(err,data)):讀取檔案有兩個引數,第一個是檔案的完整路徑,當前目錄寫./(必須要寫,為了相容Windows系統和Linux系統),第二個引數是回撥函式,表示檔案讀取完成之後做的事情//可以證明事件環機制 var

node.js學習筆記--NPM(Node Package Manager:Node.js的第三方模組、包管理器)

1. NPM包管理器   Node Package Manager:Node.js的第三方模組/包管理器,可用於下載、更新、刪除、維護包依賴關係的工具。   npm工具預設到www.npmjs.org網站下載所需的第三方模組包。   使用NPM工具下載一個新的軟體包:   

node.js學習筆記二之版本問題

nodejs targe tle 下一個 .cn blank 網站 mage 功能 一、版本說明 進入node.js官網https://nodejs.org/en/download/ 點擊上面的【All download options】進入到所有下載列表的地址 下載地

vue+node.js學習筆記

拷貝 vue 靜態頁 -1 註冊 分享 head ade view 一、搭建vue開發環境 vue init webpack newmall cnpm install npm run dev 二、測試靜態頁 把靜態頁的css拷貝進來 src

Node.js學習筆記(1):Node.js快速開始

path 文本文 下載 啟動程序 直接 查看 學習筆記 完成後 編輯器 Node.js學習筆記(1):Node.js快速開始 Node.js的安裝 下載 官方網址:https://nodejs.org/en/ 說明:   在Windows上安裝時務必選擇全部組件,包括勾選

Node.js學習筆記(2):基本模塊

依次 常用模塊 nbsp 兩個 避免 ESS 第三方 text 編程 Node.js學習筆記(2):基本模塊 模塊 引入模塊   為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文件裏,這樣,每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在No

Node.js 學習筆記(1)

  事件發射器會觸發事件,並且在那些事件觸發時能處理他們。事件發射器對於提高程式碼的複用性和簡潔程度至關重要。 1.Echo伺服器   Echo伺服器是一個使用事件發射器處理重複性事件的簡單例子,當你給它傳送資料時,它會把資料傳送回來。如圖1-1所示:   圖1-1 Echo伺服器響應例

node.js學習筆記(3)——使用cheerio處理爬取的網頁內容

一、簡介 node.js本身自帶爬取網站網頁內容的功能。 var http = require('http'); router.get('/test', function(req, res){ var url = 'http://www.baidu.com';

150.Node.js學習筆記(四)2018.12.11

知識點 Express 檔案操作路徑和模組路徑 檔案操作路徑: // 在檔案操作的相對路徑中 // ./data/a.txt 相對於當前目錄 // data/a.txt 相對於當前目錄 // /data/a.txt 絕

149.Node.js學習筆記(三)2018.12.03

1. 知識點 模組系統 核心模組 第三方模組 自己寫的模組 載入規則以及載入機制 迴圈載入 npm package.json Express 第三方web開發框架

148.Node.js學習筆記(二)2018.11.27

目錄 1. 程式碼規範 1.1程式碼規範問題 1.2 程式碼分號問題 1.3 模板字串 2. http-Apache 2.1 http-Apache功能 2.2 fs 讀取目錄 2.3 http-Apache目錄列表 3. 在node中使用模板引擎 3.1 &

147.Node.js學習筆記(一)2018.11.27

1. Node.js介紹    1.1 Node.js是什麼        Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.

Node.js學習筆記(二)——靜態資原始檔

Node.js學習筆記(二)——靜態資原始檔 參考視訊 實現一個小阿帕奇,自動為資料夾裡面的檔案、圖片、css、js加上路由。 基本思想:使用者輸入什麼url,就用fs去讀取那個檔案。 var http = require('http'); var url

Node.js學習筆記(一)——完整的響應html頁面(包括css,js檔案)

Node.js學習筆記(一)——完整的響應html頁面(包括css,js檔案) 新手學習部落格,如存在問題,歡迎指出! 終於解決了這個問題!之前寫的程式碼,然後只能加載出html檔案,然後在網上找到了解決方案。 參考部落格 這裡標記一下最主要的幾個點: node.js