AngularJs导出数据到Excel的示例代码


Posted in Javascript onAugust 11, 2017

公司一个新的需求导出Exce表格,研究了一下,最后终于实现,分享给大家。

1 使用FileSaver

第一次采用FileSaver.js 由于刚开始导致导出一片空白,还只能抓取网页里面的表格地址:https://github.com/eligrey/FileSaver.js

HTML

<div id="exportable">
  <table width="100%">
    <thead>
      <tr>
        <th>Name</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>小明</td>
        <td>dsds@163.com</td>
      </tr>
    </tbody>
  </table>
</div>

js部分

var blob = new Blob([document.getElementById('exportable').innerHTML], {
    type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"
  });
  saveAs(blob, "日记账.xls");
};

2 使用 alasql

使用alasql的好处就是可以在数据层面去组织结构

官网地址:http://alasql.org/

js部分

\\ angular 需要导入xlsx.core.min.js alasql.min.js
\\ 文件结构 
 var arr = [
      {
        '收入':1,
        '支出':2,
        '结存':3
      },
      {
        '收入':4,
        '支出':5,
        '结存':6
      }
    ]

\\ 生成 excel 文件
alasql('SELECT * INTO XLSX("日记账.xlsx",{headers:true}) FROM ?',[arr]);

我优化的版本

// 导出excel

  $scope.exportToExcel=function(){
    var data = angular.copy($scope.pageData.list)
    var arr = [];
    var type = null;
    var amountIN = 0;
    var amountOUT = 0;
    angular.forEach(data,function (item) {
      // 兑付情况
      if(item.isHappened){
        type = '未兑付'
      }else{
        type = '已兑付'
      }
      // 收入
      if(item.itemModel=='INCOME'){
        amountIN = item.amount
      }
      // 支出
      if(item.itemModel=='OUTCOME'){
        amountOUT = item.amount
      }
      arr.push({
        '兑付情况':type,
        '合同':item.keyId,
        '收付日期':$filter('date')(item.updateTime,'yyyy-MM-dd'),
        '科目':item.itemType.value,
        '收入':$filter('number')(amountIN,2),
        '支出':$filter('number')(amountOUT,2),
        '结存':$filter('number')(item.balance,2)
      })
    })
    if(arr.length < 1){
      ToasterTool.error('暂无数据,导出失败!');
    }else{
      // alasql('SELECT * INTO XLSX("日记账.xlsx",{headers:true}) FROM ?',[arr]);
      
      alasql.promise('SELECT * INTO XLSX("日记账-'+ DateTool.format(new Date(),'yyyy-MM-dd HH:mm:ss') + "-"+ $scope.loginUser.userName +'.xlsx",{headers:true}) FROM ?',[arr])
        .then(function (data) {
          if(data == 1){
            $timeout(function(){
              ToasterTool.success('数据导出成功!')
            })

          }
        })
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript下利用fso判断文件是否存在的代码
Dec 11 Javascript
关于IE BUG与字符串截取substr的解决办法
Apr 10 Javascript
45个JavaScript编程注意事项、技巧大全
Feb 11 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
Apr 16 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 Javascript
JS功能代码集锦
May 04 Javascript
js事件源window.event.srcElement兼容性写法(详解)
Nov 25 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
May 10 Javascript
D3.js实现拓扑图的示例代码
Jun 30 Javascript
vue通过数据过滤实现表格合并
Nov 30 Javascript
如何在vue中使用jointjs过程解析
May 29 Javascript
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
Vue 表单控件绑定的实现示例
Aug 11 #Javascript
Angular4实现动态添加删除表单输入框功能
Aug 11 #Javascript
node中使用es5/6以及支持性与性能对比
Aug 11 #Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 #Javascript
JSON对象转化为字符串详解
Aug 11 #Javascript
JS中Swiper的使用和轮播图效果
Aug 11 #Javascript
移动端触摸滑动插件swiper使用方法详解
Aug 11 #Javascript
You might like
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
javascript中的return和闭包函数浅析
2014/06/06 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
easyui validatebox验证
2016/04/29 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
js new Date()实例测试
2019/10/31 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
Python中对列表排序实例
2015/01/04 Python
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
Python使用minidom读写xml的方法
2015/06/03 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
python Scrapy框架原理解析
2021/01/04 Python
造价工程师个人求职信
2013/09/21 职场文书
营业员个人总结的自我评价
2013/10/25 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
合作协议书范本
2014/04/17 职场文书
大学社团计划书
2014/05/01 职场文书
分公司负责人任命书
2014/06/04 职场文书
迎国庆主题班会
2015/08/17 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
DIY胆机必读:各国电子管评价
2022/04/06 无线电
分享python函数常见关键字
2022/04/26 Python
Nginx 匹配方式
2022/05/15 Servers