首页 > 其他分享 >前端导出简单的Excel

前端导出简单的Excel

时间:2024-05-09 17:35:34浏览次数:19  
标签:obj buf Excel 前端 导出 length let hasOwnProperty data

//报表导出
            exportProjectCount: async function () {
                let that = this;
                await that.getProjectCount().then(() =>{
                    console.log( "日志输出",that.dataCount.length)
                    let dataList = [];
                    for (let i = 0; i < that.dataCount.length; i++) {
                        let data = that.dataCount[i];
                        let obj = {};
                        obj['序号'] = i+1;
                        if (data.hasOwnProperty('projectCountNum')) {
                            obj['政府采购项目数(个)'] = data.projectCountNum;
                        }
                        if (data.hasOwnProperty('projectSmeCountNum')) {
                            obj['专门面向中小微企业的项目数(个)'] = data.projectSmeCountNum;
                        }
                        if (data.hasOwnProperty('projectNoSmeCountNum')) {
                            obj['非专门面向中小微企业的项目数(个)'] = data.projectNoSmeCountNum;
                        }
                        if (data.hasOwnProperty('programBudgetSum')) {
                            obj['委托金额(万元)'] = data.programBudgetSum;
                        }
                        if (data.hasOwnProperty('offerPriceSum')) {
                            obj['成交金额(万元)'] = data.offerPriceSum;
                        }
                        if (data.hasOwnProperty('savingCapital')) {
                            obj['节约资金(万元)'] = data.savingCapital;
                        }
                        if (data.hasOwnProperty('savingRate')) {
                            obj['节资率(%)'] = (data.savingRate*100).toFixed(2) + '%';
                        }
                        dataList.push(obj);
                    }
                    //定义导出的格式类型
                    const opts = { bookType: 'xlsx', bookSST: false, type: 'binary' };
                    console.log('导出项目数据信息');
                    let sheetName = '导出项目数据信息';
                    let excelFileName = '项目数据统计';
                    const wb = { SheetNames: [sheetName], Sheets: {}, Props: {} };
                    wb.Sheets[sheetName] = XLSX.utils.json_to_sheet(dataList);//通过json_to_sheet转成单页(Sheet)数据
                    //定义表头快读,默认统一200
                    let cols = [];
                    for (let i = 0; i < Object.keys(dataList[0]).length; i++) {
                        let colWidth = {
                            wpx: 200
                        }
                        cols.push(colWidth);
                    }
                    wb.Sheets[sheetName]['!cols'] = cols;
                    this.saveAs(new Blob([this.s2ab(XLSX.write(wb, opts))], { type: "application/octet-stream" }), excelFileName + '.' + (opts.bookType==="biff2"?"xls":opts.bookType));
                }).catch(function (err) {
                    console.log(err);
                    return Promise.reject('导出失败');
                });
            },
            saveAs: function(obj, fileName){
                let tmp = document.createElement("a");
                tmp.download = fileName || "下载";
                tmp.href = URL.createObjectURL(obj); //绑定a标签
                tmp.click(); //模拟点击实现下载
                setTimeout(function () { //延时释放
                    URL.revokeObjectURL(obj); //用URL.revokeObjectURL()来释放这个object URL
                }, 100);
            },
            s2ab: function(s){
                if (typeof ArrayBuffer !== 'undefined') {
                    let buf = new ArrayBuffer(s.length);
                    let view = new Uint8Array(buf);
                    for (let i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
                    return buf;
                } else {
                    let buf = new Array(s.length);
                    for (let i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
                    return buf;
                }
            },

 

标签:obj,buf,Excel,前端,导出,length,let,hasOwnProperty,data
From: https://www.cnblogs.com/Gourlay/p/18182781

相关文章

  • xlwings:在Excel中集成Python
    Github地址:https://github.com/xlwings/xlwings在现代数据分析和报表生成中,MicrosoftExcel仍然是一款非常流行和强大的工具。与此同时,Python作为一种高级编程语言,具备出色的数据处理和分析能力。那么,有没有一种方法可以将Excel和Python完美结合,以发挥它们各自的优势?答案是肯定的......
  • Java-读取resource目录下的文件并返回给前端
    我在项目的resource目录下面放了一个模板文件,用来供用户下载提供一个接口给前端,用来下载在Utils类下面写个方法来读取代码publicstaticvoidgetXMindTemplate(HttpServletResponseresponse){StringfileName="templates/TestCaseTemplate.xmind";//文件名称ClassPa......
  • 微信小程序导出Excel文件并转发给好友
    需求:小程序的列表页面增加导出功能,点击“批量导出”按钮,则自动生成导出文件,然后自动调起微信好友列表,然后可以将文件发送给微信好友解决方案:由于列表数据是分页加载,所以导出直接由后端同学进行生成并返回url,则我们前端同学只负责下载wx.downloadFile并转发wx.shareFileMessage......
  • 5.8——前端api
    文章分类模块importrequestfrom"@/utils/request.js";//import{useTokenStore}from"@/stores/token.js";//文章分类列表查询//文章分类列表查询exportconstarticleCategoryListService=()=>{//获取token状态//consttokenStore=useTokenStore();//通过......
  • ExcelDataReader:一个.Net高性能Excel开源读取器
    ExcelDataReader:一个.Net高性能Excel开源读取器来自:编程乐趣推荐一个用于读取MicrosoftExcel文件的高性能开源库。 01项目简介ExcelDataReader是一个功能强大且易于使用的开源项目,提供了丰富的读取API,专门读取Excel文件的数据,特别是处理大数据量的情况。ExcelDataReader......
  • Spring SpringMVC——前端控制器初始化过程
     创建完DispatcherServlet对象时,会执行类中的init方法 如果不配置load-on-startup,那么DispatcherServlet将在第一次收到请求时才会被实例化和初始化。这意味着DispatcherServlet不会在服务器启动时立即执行创建和初始化的操作。当第一个请求到达时,Servlet容器(如Tomca......
  • UIOTOS前端零代码应用 蓝图连线+嵌套封装 实现MQTT输入0、1切换门禁开和关
    目标通过连线+嵌套封装,实现MQTT数据推送前端控制门禁开关最终效果实现过程步骤1:新建一个页面,在工具函数input输入两个门禁的开关图标地址,再通过连线和解析实现输0、1切换图标。 步骤2:再插入图片按钮,通过连线和解析,把工具函数的输出传递给图片按钮组件的path属性。 步骤......
  • 读取PDF文件,并写入excel表
    importrefromopenpyxlimportWorkbookpdf_name='D:/beifangzhongzhi/zhongye/百保科技/疾病/疾病.pdf'importPyPDF2defget_text(pdf_name):withopen(pdf_name,'rb')asfile:reader=PyPDF2.PdfReader(file)num_pages=......
  • python教程6.4-excel处理模块
    第三方开源模块安装 创建文件打开已有文件写数据选择表保存表遍历表按行遍历按列遍历遍历指定行列遍历指定第几列数据删除表设置单元格样式字体对齐设置行高列宽 ......
  • python+selenium+excel自动登录,自动填写网页
    经常有些网页要登录,然后频繁填写一些重复的内容,本文暂只考虑不需要验证码的情况,可以通过selenium模拟用户行为在页面操作,用excel拖出相似内容,用xlrd读取并填写到网页中。导入相关包fromseleniumimportwebdriverimportosimportxlrdimportxlwtimportjsonimportreq......