nodejs中间件xlsx.js导出excel文件使用方法封装(原创)

  之前的项目一直使用的是nodejs的node-xlsx.js中间件,最近的项目部署时不能使用外网,而node-xlsx.js的路径太长不能U盘复制,现在改用xlsx.js中间件。

  现在把自己封装的使用方法分享出来,和大家一起学习。

  代码很简单,轻喷。

/**
 * Created by Administrator on 2016/11/17.
 * 使用xlsx中间件,传入表头[数组],表内数据[对象数组],文件名[string]
 //var header=["姓名",‘年龄‘,‘性别‘];
 * var excel=[
 {name:‘z3‘,age:16,sex:‘男‘},
 {name:‘l4‘,age:20,sex:‘女‘},
 {name:‘w5‘,age:24,sex:‘男‘},
 {name:‘z6‘,age:23,sex:‘女‘},
 {name:‘ss‘,age:10,sex:‘不男不女‘}
 ];
 var path=‘../web/xxx.xlsx‘;
 */
var fs=require(‘fs‘);
var os=require(‘os‘);
var xlsx=require(‘xlsx‘);
var errors=require(‘../libs/errors‘);
var underscore = require(‘underscore‘);

function createExcel(headArr,excel,filePath,callback){
    if( !headArr instanceof Array || !excel instanceof Array || typeof filePath != ‘string‘){
        //console.log(headArr instanceof Array ,excel instanceof Array,typeof filePath);
        return callback("创建文件方法所需参数传递错误",null);
    }else{
        var arrlen=headArr.length;
        var headObj={},//生成表头
            indexObj={};//生成表内数据
        for(var i=0;i<arrlen;i++){
            var str=String.fromCharCode(65+i)+1;
            if(i>26){
                str=String.fromCharCode(65)+String.fromCharCode(65+i-26)+1;
            }
            if(i>52){
                return callback(‘表头太多,请做适当删减‘,null);
            }
            headObj[str]={v:headArr[i]};
        }

        var indexArr=[];
        for(var e=0;e<excel.length;e++){
            for(var j=0;j<headArr.length;j++){
                var index=String.fromCharCode(65+j)+(e+2);
                indexArr.push(index);
            }
        }
        //console.log(indexObj);
        //console.log("indexArr:",indexArr);
        var excelArr=[];
        for(var r=0;r<excel.length;r++){
            var rec=excel[r];
            for(var ii in rec){
                excelArr.push(rec[ii]);
            }
        }
        //console.log(‘excelArr:‘,excelArr);
        for(var i=0; i< indexArr.length;i++){
            indexObj[indexArr[i]]={v:""};
        }
        for(var ind=0; ind< indexArr.length;ind++){
            var j=0;
            for(jj in indexObj){
                if(indexArr[ind]==jj){
                    //console.log(jj,excelArr[i]);
                    indexObj[jj].v=excelArr[j];
                    break;
                }
                j++;
            }
        }
        var refS=‘A1‘,
            refE=String.fromCharCode(65+arrlen-1)+(excel.length+1);//表中数据范围 A1:F4
        var renge={
            ‘!ref‘:refS+‘:‘+refE
        };
        var _data=underscore.extend(headObj,indexObj,renge);
        var wb={
            SheetNames:[‘mySheet‘],
            Sheets:{
                ‘mySheet‘:_data
            }
        };
        //console.log(wb);
        xlsx.writeFile(wb,filePath);
        callback(null,true);
    }
}
exports.createExcel = createExcel;

/*
 生成excel文件在30分钟内未被下载即从服务端删除
 setTimeout当服务器在3分钟内中止服务再恢复后要重新记录时间
 @filename excel文件名
 @callback 回调结果
 */
function deleteFile(fullPath, callback) {
    //console.log("传递的路径为:", fullPath);
    return setTimeout((function () {
        return fs.exists(fullPath, function (exists) {
            if (exists) {
                return fs.unlink(fullPath, function (err) {
                    if (err) {
                        return callback(err, null);
                    } else {
                        return callback(null, true);
                    }
                });
            } else {
                return callback(errors.NoFileExist);
            }
        });
    }), 3 * 60 * 1000);
}
exports.deleteFile = deleteFile;

  

时间: 2024-08-26 18:27:19

nodejs中间件xlsx.js导出excel文件使用方法封装(原创)的相关文章

XLSX.js 导出Excel demo

GitHub:https://github.com/SheetJS/js-xlsx 一个js操作Excel的工具,如下代码,很方便的就将json数据导出为Excel文件. 使用示例: //json 数据 var data = [{ "a": 1, "x": 2, "b": 3, "y": 4, "success":true }, { "a": 1, "x": 2, &

Java实现导入导出Excel文件的方法

目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 直接上代码: 一,POI POI是apache的项目,可对微软的Word,Excel,Ppt进行操作,包括office2003和2007,Excl2003和2007.poi现在一直有更新.所以现在主流使用POI. xls: pom: org.apache.poi poi-ooxml 3.9 commons-io commons-io 2.2 导出: public class PoiCreat

利用Extjs导出excel文件(转)

最近在做一个项目,需要在原先的表格的基础上导出excel文件,原先是想用java后台来实现这个功能,但是,后来发现,原来extjs也附带有导出excel表的功能,就在GridPanel的基础上导出,http://www.blogjava.net/rockblue1988/archive/2012/02/29/370977.html,这是我做的时候,参考的一篇网上的文章.具体的做法是,将extjsGridPanel里面的数据拿出来,转换成xml,然后发送给后台,后台响应之后,将数据输出为Excel

浏览器端JS导出EXCEL

很多表格业务需要将表格数据导出为Excel,通常使用后台语言java或者php实现数据查询组织Excel文件,提供下载.如果使用客户端JS导出Excel的话,可以减轻服务器端的运算压力,并且能够快速响应. 早期浏览器端导出excel都是借助IE的ActiveX,需要调整浏览器的安全级别,且只能再IE浏览器下使用.我们需要一种跨平台的解决方案. 而Flash具有强大的客户端处理能力,其FileReference类可以从浏览器向本地存储数据.随着Html5的发展,File API也支持浏览器读写本地

JQGrid导出Excel文件

系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件及方法 Web jquery表格组件 JQGrid 的使用 - 5.Pager翻页.搜索.格式化.自定义按钮 Web jquery表格组件 JQGrid 的使用 - 6.准备工作 & Hello JQGrid Web jquery表格组件 JQGrid 的使用 - 7.查询数据.编辑数据.删除数据

纯前端实现数据导出excel文件

一  安装依赖 npm install -S file-saver xlsx npm install -D script-loader 二 新建文件夹 在网上百度引入即可 三 在main.js中引入 import Blob from './vendor/Blob.js' import Export2Excel from './vendor/Export2Excel.js' (pass:注意路径和文件名是否一致) 四 webpack.base.conf.js做如下修改: resolve: { ex

PHP从数据库导出EXCEL文件

参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-type: text/html; charset=utf-8');header("Content-type:application/vnd.ms-excel");header("Content-Disposition:filename=test.xls"); $conn =

PHP导出excel文件,第一步先实现PHP模板导出不带数据

今天继续研究PHP导出excel文件,把复杂的事情简单化,一步步实现功能,首先实现模板文件的导出,随后再实现写入数据后导出,最终实现功能,这是基本思路.中间可以加一步,先自己写入数据导出试试,随后再数据库导入.我首先把程序提交到自建的eubexcel.php文件,选用post提交,导出excel文件的程序在这个页面里书写,参考昨天下载的PHPExcel-1.8组件里的参考文档,先部署导出excel,具体代码如下 <?php error_reporting(E_ALL);ini_set('disp

将DataTable导出为Excel文件的方法

 需求:前台点击某个按钮,在后台从数据库中获取某DataTable数据到处成Excel文件. 1.Asp按钮控件 两个按钮,分别调用两种导出Excel文件的后台方法. <%--第一种方法--%> <form id="form1" runat="server"> <div> <asp:Button runat="server" OnClick="Btn1_Click" ID="