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 replace方法与正则表达式
Feb 19 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
Jul 27 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
Javascript基础_嵌入图像的简单实现
Jun 14 Javascript
完美解决IE9浏览器出现的对象未定义问题
Sep 29 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
菊花转动的jquery加载动画效果
Aug 19 jQuery
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
微信公众平台获取access_token的方法步骤
Mar 29 Javascript
vue封装swiper代码实例解析
Oct 08 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
PHP链表操作简单示例
2016/10/15 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
python实现代理服务功能实例
2013/11/15 Python
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
tensorboard显示空白的解决
2020/02/15 Python
python os模块在系统管理中的应用
2020/06/22 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
自我评价的范文
2014/02/02 职场文书
夜不归宿检讨书
2014/02/25 职场文书
公民授权委托书范本
2014/09/17 职场文书
工资收入证明
2014/10/07 职场文书
周末问候语大全
2015/11/10 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
Java实现多文件上传功能
2021/06/30 Java/Android