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 相关文章推荐
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
Display SQL Server Version Information
Jun 21 Javascript
Js为表单动态添加节点内容的方法
Feb 10 Javascript
vue-router跳转页面的方法
Feb 09 Javascript
几行js代码实现自适应
Feb 24 Javascript
vue-cli单页应用改成多页应用配置详解
Jul 14 Javascript
使用gulp构建前端自动化的方法示例
Dec 25 Javascript
JavaScript闭包与作用域链实例分析
Jan 21 Javascript
node实现mock-plugin中间件的方法
Dec 25 Javascript
vue 动态组件用法示例小结
Mar 06 Javascript
Vue和React有哪些区别
Sep 12 Javascript
利用js实现简易红绿灯
Oct 15 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
url decode problem 解决方法
2011/12/26 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
php共享内存段示例分享
2014/01/20 PHP
PHP 微信支付类 demo
2015/11/30 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Pandas分组与排序的实现
2019/07/23 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
购买一个高级域名:BuyDomains
2018/03/11 全球购物
财务管理专业应届毕业生求职信
2013/09/22 职场文书
门卫岗位安全职责
2013/12/13 职场文书
体育教师自荐信范文
2013/12/16 职场文书
村党支部公开承诺书
2014/05/29 职场文书
北京奥运会主题口号
2014/06/13 职场文书
个人委托书范本汇总
2014/10/01 职场文书
实习生矿工检讨书
2014/10/13 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
自我工作评价范文
2015/03/06 职场文书
二手房购房意向书
2015/05/09 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
html实现弹窗的实例
2021/06/09 HTML / CSS