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 相关文章推荐
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
js 本地预览的简单实现方法
Feb 18 Javascript
javascript比较两个日期相差天数的方法
Jul 23 Javascript
jQuery实现删除li节点的方法
Dec 06 Javascript
react-redux中connect()方法详细解析
May 27 Javascript
vue2.0移除或更改的一些东西(移除index key)
Aug 28 Javascript
Angular2监听页面大小变化的解决方法
Oct 09 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 Javascript
vue权限管理系统的实现代码
Jan 17 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 Javascript
Element Input输入框的使用方法
Jul 26 Javascript
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
解析isset与is_null的区别
2013/08/09 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
python中defaultdict的用法详解
2017/06/07 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Python创建数字列表的示例
2019/11/28 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
Python如何将模块打包并发布
2020/08/30 Python
python SOCKET编程基础入门
2021/02/27 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
施工单位安全责任书
2014/07/24 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
三八妇女节慰问信
2015/02/14 职场文书