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;

  

转载于:https://www.cnblogs.com/cm1236/p/6074453.html

SOAOFFICE - 微软 OFFICE 中间件 SOAOffice 中间件是北京科翰软件为微软OFFICE量身打造的Web中间件,是Web调用Office、存取Office数据的必备中间件。SOAOffice中间件由服务器端数据组件和客户端显示控件构成。 SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线(浏览器页面)打开、编辑、保存Office文档,而且开发人员还能够以简洁的代码快速的将数据库数据动态填充到Office文档指定位置,并且也能够从Office文档中提取指定位置的数据保存到数据库。 SOAOffice提供这些强大功能的同时,服务器端并不需要安装运行Office软件。通过SOAOffice,在Web世界里,难以驯服的Word/Excel就变成了普通的、熟悉的、服务器端可调用的.Net组件、Java组件、ASP组件、PHP组件,开发人员再也不用研究复杂的Word/Excel COM自动化细节、学习复杂的VBA语法调用,也不用去应对Word/Excel死进程、系统稳定运行的问题。开发人员能够节省宝贵的精力和时间,把它投放到更重要的业务逻辑和系统架构上,而控制Office的具体技术细节交给SOAOffice去做。 SOAOffice除了提供Word/Excel动态数据填充,Word/Excel数据导入导出,Word/Excel/PowerPoint等Office文档的在线打开、编辑、保存,权限控制,只读控制等功能外,还给在线办公内置了强大的支持功能:强制痕迹保留,手写批注,圈阅签字,手写签名,电子印章、数字签名、模板套红、一键套红等。 科翰软件是国内唯一的微软Office中间件开发商,拥有卓越的自主研发实力和独创的专利技术,其产品SOAOffice不仅畅销国内,而且还远销欧美国际市场,其中世界500强美国Dover集团、可口可乐 Coca-Cola、中石油、中石化等都是SOAOffice产品的忠实客户。 SOAOFFICE中间件主要应用在Web系统下所有涉及编程调用Office的领域,例如: 1. 需要把数据库字段内容填充到Word/Excel指定位置的; 2. 需要把Word/Excel指定位置的内容提取出来保存到数据库字段的; 3. 需要动态生成指定格式的Word文档的; 4. 需要把html页面中表格导出excel的; 5. 需要在html页面中套打票据、报表的; 6. 需要在html页面中显示复杂报表,并要求精确打印预览及打印的; 7. 需要动态生成中国式复杂格式报表的; 8. 需要在html页面中输入复杂票据的; 9. 使用COM服务器自动化技术调用Word/Excel经常产生死进程或系统不稳定的; 10.Web系统中调用Word/Excel的页面有大量并发用户访问的; 11.使用jacob、jxl、apache poi的; 12.需要在Web中调用Word/Excel,并且追求系统运行稳定、可靠的; 13.最终用户可以浏览 Word/Excel/Ppt 文档内容,但需要禁止复制、粘贴、下载、另存的; 14.需要在html页面中在线编辑Word公文的; 15.需要在协同办公中强制保留Word修改痕迹的; 16.需要在协同办公中手写批注、手写签名、加盖电子印章、模板套红的; 17.需要在新闻编辑中强制保留Word修改痕迹、手写批注、圈阅的; 18.需要在远程教育中实现试卷、作业在线批改的。 19.需要在html页面中把Word转换为pdf的; 20.需要在html页面中快速打开、显示pdf的; 21.需要在Ajax架构里调用Word/Excel的,包括服务器端和客户端Javascript都适用。 22.需要控制不同的用户在Word/Excel中不同的区域中编辑权限的; 23.需要在企业局域网内架设在线Office文档中心、知识管理的; 24.需要在web页面导入导出Excel单元格数据的; ……… SOAOFFICE中间件包括三个内置组件:SOAExcel、SOAWord、SOAPowerPoint。另外企业版还包括支持PDF文件的SOAPDF组件。 SOAOFFICE 中间件采用标准HTTP传输协议,跨平台性好,支持任意Web服务器(IIS,WebLogic,WebSphere,Apache,Tomcat,Domino等),任意服务器操作系统(Win2k, Win2003,Win2008,Linux,Unix等),任意数据库(Access,SQL Server,Oracle,MySQL,DB2,Sybase等),以及任意WEB编程语言和Web架构(C#,Java,VB.Net,PHP,DOMINO,JSP,ASP,J2EE,ASP.NET,Ajax等)。SOAOFFICE同时支持C/S方式的编程和其他支持ActiveX的容器,您可以在VB,Delphi以及C++ Builder中使用中间件,快速创建C/S结构的应用。 SOAOFFICE中间件是一个国际化产品,支持多种界面语言:简体中文、繁体中文、英语、日语、法语、德语等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值