1. 程式人生 > >nodejs + exceljs 模組 實現 頁面下載excel檔案

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檔案進行下載的後臺程式碼。