nodejs + exceljs 模組 實現 頁面下載excel檔案
寫這篇文章的當前時點是2018/03/16
我的node版本是v6.10.0
最近用nodejs作為後臺搭建了一個簡單的管理系統,有個需求是需要採集資料生成excel通過瀏覽器下載。
從網上查了很多例子,由於nodejs發展的比較快,版本變更頻繁,相關的資料不太好找,最後我用exceljs+nodejs本身實現了這個功能,放在這裡記錄一下。
整體實現分兩步
一、前臺點選按鈕生成excel
前臺程式碼
// 匯出excel按鈕按下處理 form.on('submit(export)', function(data){ $.post("exportSgxxExcel",{data:JSON.stringify(data.field)},function(result) { // 取得檔案地址 console.log(result.path); // $.get("download", {path:result.path}, function(){ // console.log('text'); // }); location.href ="download?path="+result.path; }); return false; //阻止表單跳轉。如果需要表單跳轉,去掉這段即可。 });
後臺程式碼
// 匯出XX資訊excel exports.exportSgxxExcel = function(req, res){ // 檢索XX資訊資料 var sql = "SELECT XX from XX where XX=XX"; // 取得資料 connection.query(sql, function(err, rows, fields){ if(err){ // 系統異常 console.log(err); res.json({'status':'error'}); }else{ //console.log("取得資料為"+JSON.stringify(rows)); // 生成一個檔案 var workbook = new Excel.Workbook(); // 新增一個sheet var sheet = workbook.addWorksheet('XX資訊'); // 設定sheet頁的表頭 sheet.columns = [ { header: 'AA', key: 'bb', width: 10 }, { header: 'CC', key: 'dd', width: 10 }, ]; // 設定行資料 //console.log(JSON.stringify(rows)); sheet.addRows(rows); // 取得當前時間 var date = Moment().format('YYYYMMDD_HHmmss'); var path = downloadPath+date+"_XX資訊.xlsx"; workbook.xlsx.writeFile(path) .then(function() { res.json({'path':path}); }); } }); };
這一步會在伺服器本地你設定的downloadPath下生成一個excel檔案,並且把檔案的真實路徑返回到post的回撥中
二、下載檔案
前臺程式碼其實就在上一步的程式碼中,就一句
location.href ="download?path="+result.path;
後臺程式碼也很簡單
// 下載檔案 exports.download = function(req, res){ // 取得前臺傳過來的檔案path var path = req.query.path; console.log('準備下載------'+path); // 取得檔名 var filename = path.substring(path.lastIndexOf('/')+1); // 下載處理 res.download(path, filename); };
nodejs的express模組自帶下載,直接按照上面的寫法就能下載了
注意以下幾點,downloadPath最好用相對路徑,這種下載的實現好像只能用get請求,post沒實驗成功。
exceljs使用方式直接參考github上的說明就行,看api還是很強大的,能實現很多操作,不過我這就用了很簡單的一部分,連結如下點選開啟連結https://github.com/guyonroche/exceljs
以上
相關推薦
nodejs + exceljs 模組 實現 頁面下載excel檔案
寫這篇文章的當前時點是2018/03/16我的node版本是v6.10.0最近用nodejs作為後臺搭建了一個簡單的管理系統,有個需求是需要採集資料生成excel通過瀏覽器下載。從網上查了很多例子,由於nodejs發展的比較快,版本變更頻繁,相關的資料不太好找,最後我用exc
用jspdf實現頁面下載生成pdf檔案
一路辛酸就不多說了,經歷了各種嘗試,最後終於搞定,直接貼程式碼: function pdfCreater(){ html2canvas(document.body, { onrendered: function(canvas) {var imgData = canvas.toDataURL();/
springmvc下載excel檔案,通過get方式傳少量引數
Html <el-button @click=downloadExcel>資料匯出</el-button> export default { methods:{ downloadExcel(){ window.location.href='/api
nodejs 使用nodejs-websocket模組實現點對點實時通訊
1、首先安裝好nodejs-websocket npm install nodejs-websocket --save -g 2、編寫服務端 var ws = require("nodejs-websocket") var AllUserData = new Array(
AngularJS通過post方法下載excel檔案
註明: 第一行的: $rootScope.restful_api.last_output_excel,body_data 這兩個值,分別是URL串和post請求的body。其他程式碼不用變,即可使用。 原文連結:http://www.cnblogs.com/xuja
Java POI元件實現多個Excel檔案整合成一個多Sheet的Excel檔案
程式碼: package com.weichai; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStre
vue中上傳讀取及下載excel檔案
準備工作 1、安裝依賴包 npm install -S file-saver (-S用於生產環境) npm install -S xlsx npm install -D script-loader (-D用於開發環境) 2、引入檔案 匯出excel需要兩個檔案:B
axios下載excel檔案
html下載檔案 最簡單的方式莫過於使用a標籤賦予href下載,或者是window.open,但是卻無法執行post請求、以及在request.headers中放置內容,以下提供一種方式,基於axios import axios from 'axios'
前端下載excel檔案功能的三種方法
原文:https://www.cnblogs.com/houxiaohang/p/6846467.html 因為最近要做一個功能:將excel檔案上傳到伺服器進行解析讀取,再生成新的excel檔案下載下來。故找到了這篇博文,很實用,轉載一下,方便以後使用。 1 從後端接收json資料,前端處理生成exce
Jquery+SpringMVC實現上傳Excel檔案,並批量匯入
1.前端程式碼 function alertUploadFile(){ //建立表單 var formData = new FormData(); var file = $("#upload").val(); console.log(file)
解決ie下載excel檔案直接在瀏覽器開啟的問題(tomcat,web專案)
web專案中,下載檔案時,ie無法自動識別檔案型別會直接以txt形式讀取,就造成了,直接在瀏覽器中開啟的效果 解決方法 1.web.xml裡填入如下程式碼 xlsapplication/vnd.ms-excelxlsxapplication/vnd.o
SpringCloud之實現上傳Excel檔案,初始化匯入資料至資料庫
1、頁面程式碼如下,彈出窗是用的layer: <input type="button" class="btn_default" style="width: 100px;" onclick="investigation();" value="匯入心理諮詢"/>
Demo系列一之 Form表單下載Excel檔案
效果圖區: 程式碼區: 前端程式碼,只提供點選事件中的內容; //"匯出Execl"按鈕點選事件 $("#export").click(function(){ var form = $
使用phpexcel上傳下載excel檔案
<?php /** * Created by lonm.shi. * Date: 2012-02-09 * Time: 下午4:54 * To change this template use File | Settings | File Templates. */ requ
Servlet實現匯出下載csv檔案
工作上遇到的場景,需要將客戶列表資料匯出成csv檔案。測試了一個最簡單版本,記錄一下。 訂單實體類: package entity; /** * 訂單資訊實體 * Created by dylan-pc on 2017/8/17. */ public class
使用AngularJS匯出/下載excel檔案
通常下載一個檔案用window.location.href = "介面內容"就能實現下載一個檔案的需求。但是如果遇到一些特殊的需求,比如說需要在請求頭重加一些屬性和值,這樣window.location.href就不能滿足了。但是可以用angularJS自帶的$http來請求
使用vue上傳或下載excel檔案
<form> <input type="file" name="fileup" id="uploadEventFile" v-on:change="fileChange($event)" style="display:none" />
無重新整理檔案下載Excel檔案
1.問題描述:列表查詢頁面,根據多個不同的查詢條件查詢出對應的列表分頁顯示,現在需要把查詢出來的列表匯出到Excel文件中。 2.方法1:我一開始用 window.open(url);,url為匯出Excel檔案url地址。這樣的話只能匯出全部的列表,因為沒有把頁面中的查
Django下載Excel檔案
下面提供一個在Django中下載Excel檔案的方法,適用於小型簡單檔案: html <button onclick="window.location.href='/down_file'">下載檔案</button> urls.py url(r
java後臺實現excel檔案下載功能
java中對於excel檔案的操作,有讀取,寫入,上傳等功能,在對excel檔案進行操作時,為了讓使用者更加直觀的製作excel資料,必然會有下載模板excel檔案功能, 這裡以學生基本資訊模板excel檔案為例,實現對指定路徑下的excel檔案進行下載的後臺程式碼。