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图像处理思路及实现代码
Dec 25 Javascript
JavaScript变量的作用域全解析
Aug 14 Javascript
jQuery中fadein与fadeout方法用法示例
Sep 16 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
Dec 28 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
js+html5实现侧滑页面效果
Jul 15 Javascript
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
Element-UI踩坑之Pagination组件的使用
Oct 29 Javascript
Three.js中矩阵和向量的使用教程
Mar 19 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
Oct 29 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 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的PSR规范中文版
2013/09/28 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
Symfony查询方法实例小结
2017/06/28 PHP
利用javascript查看html源文件
2006/11/08 Javascript
Code:findPosX 和 findPosY
2006/12/20 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
js实现点赞效果
2020/03/16 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python 装饰器深入理解
2017/03/16 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Django中信号signals的简单使用方法
2019/07/04 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
abstract是什么意思
2012/02/12 面试题
终止劳动合同协议书
2014/04/14 职场文书
运动会运动员赞词
2015/07/22 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
基于PyQt5制作一个群发邮件工具
2022/04/08 Python