//moment是操作日期的插件 
//引入lodash是为了方便操作数据
//xlsx是获取表格的必须插件
 
import moment from 'moment';
import _ from 'lodash';
import xlsx from 'xlsx';
export function exportCsv(originList, originColumns) {
//originList, originColumns 分别为你需要下载的数据列表以及数据title  
//这两条不能为空,否则报错
//不能直接操作原数据,因为可能会对数据进行一些必要的清楚/筛选操作,所以需要用到loadsh的深复制
  if (_.isEmpty(originList) || _.isEmpty(originColumns)) {
    return;
  }
  let list = _.cloneDeep(originList);
  const columns = _.cloneDeep(originColumns);
  const data = [];
//数据title中有“操作”这一条(最后一条)不必进行打印

  list.forEach((col, k) => {
    const colProfile = {};
    columns.forEach((item, index) => {
      if (_.get(item, 'title') === '操作') {
        return;
      }
 
//使用lodash的get方法,这样当数据为undefined的时候不会报错
 
      // let value = _.get(col, _.get(item, 'dataIndex'), '暂无');
      let value = _.get(col, _.get(item, 'dataIndex'));
      if (!_.get(item, 'dataIndex')) {
        value = item.convertor(col);
      }
      if (item.convertor && _.isFunction(item.convertor) && _.get(item, 'dataIndex')) {
        value = item.convertor(value);
      }
      if (_.isArray(value)) {
        value = value.join(',');
      }
      if(_.isArray(_.get(value,"industries"))){
        value=value.industries.join(",")
      }
      if (_.get(item, 'dataIndex') === 'index') {
        value = k + 1;
      }
      _.set(colProfile, _.get(item, 'title'), value);
    });
    data.push(colProfile);
  });
  const ws = xlsx.utils.json_to_sheet(data);
  const wb = xlsx.utils.book_new();
  xlsx.utils.book_append_sheet(wb, ws, moment().format('YYYYMMDDHHmmss'));
  xlsx.writeFile(wb, `${moment().format('YYYYMMDDHHmmss')}.xlsx`);
}

项目中对获取的数据进行下载成Excel表格的更多相关文章

  1. EL表达式查询出来的数据,下载成excel表格,很实用的

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  2. vue项目中的elementUI的table组件导出成excel表

    1.安装依赖:npm install --save xlsx file-saver 2.在放置需要导出功能的组件中引入 import FileSaver from 'file-saver' impor ...

  3. php 从一个数组中随机获取固定数据

    <?php /* * * 通过一个标识,从一个数组中随机获取固定数据 * $arr 数组 * $num 获取的数量 * $time 随机固定标识值,一般用固定时间或者某个固定整型 * */ fu ...

  4. 使用 Qt 获取 UDP 数据并显示成图片(2)

    本文首发于 BriFuture 的 个人博客 在我的前一篇文章 使用 Qt 获取 UDP 数据并显示成图片 中,我讲了如何用 Python 模拟发送数据,如何在 Qt 中高效的接收 UDP 数据包并将 ...

  5. Java导出数据行写入到Excel表格:基于Apache POI

    Java导出数据行写入到Excel表格:基于Apache POI import java.io.File; import java.io.FileOutputStream; import org.ap ...

  6. IT项目中使用 json格式数据 保存项目配置信息, 在配置文件再读取json文件的内容进行赋值

    json格式小巧玲珑,适合做配置文件,特别是大型项目中, 可以将配置信息分类保存到不同的json文件中, 然后再在配置文件中读取配置文件的数据进行赋值, 这里以python为例进行说明: 假设在you ...

  7. [iOS微博项目 - 2.6] - 获取微博数据

    github: https://github.com/hellovoidworld/HVWWeibo   A.新浪获取微博API 1.读取微博API     2.“statuses/home_time ...

  8. 使用NSURLSession获取网络数据和下载文件

    使用NSURLSession获取网络数据 使用NSURLSession下载文件

  9. Vue项目中jsonp抓取数据实现方式

    因为最近在做vue的项目,在前端做数据的时候遇到了数据抓取的难题,查了一些资料,自己也研究了一下,总体来说是搞出来了(基于黄奕老师的项目找出来的经验),废话不多说,直接上代码 ------------ ...

随机推荐

  1. Check Host:实时监控网站或者服务器是否可以访问

    如果你拥有一个网站,那么最重要的事情就是要保证它24小时都能够访问.不过国内的虚拟主机服务非常糟糕,经常会出现各种状况,所以我们需要一个软件,可以让我们第一时间知道网站出现了无法访问的情况,从而通知售 ...

  2. mysql多表查询之子语句查询

    1.子语句查询 1.1子语句查询出来的结果集作为临时表名使用 select * from (select * from person) as aaa; -- as这个起别名关键字是可以省略的 1.2查 ...

  3. 循序渐进VUE+Element 前端应用开发(28)--- 附件内容的管理

    在我们很多模块里面,都需要使用到一些诸如图片.Excel文件.PDF文件等附件的管理,一般我们倾向于把它独立为一个公用的附件管理模块,这样可以有效的统一管理附件的信息.本篇随笔介绍附件内容的管理,包括 ...

  4. 数据恢复当选EasyRecovery,设备不再受限

    我们在逐渐适应信息电子化的同时,也有一些潜在的麻烦接踵而来,其中较为常见的就是文件和数据的保存问题. 显然,设备的存储空间是有限的,这就不可避免地会出现数据被删除.覆盖或丢失的现象,如果丢失的是重要数 ...

  5. 巧妙使用MathType快速编写数学函数公式

    在我们日常的工作与学习中,你是否也会遇到过无法在电脑中编写数学函数公式的情况呢? 简单的数学函数公式或许经过我们不懈的努力也可以成功的编写,不过这会耽误我们大把的时间. 想象一下,假如你的老板急着催你 ...

  6. 安装swoole扩展

    wget https://github.com/swoole/swoole-src/archive/v1.9.3-stable.tar.gz tar -zxvf v1.9.3-stable.tar.g ...

  7. P1163 银行贷款

    考虑从一个月转移到下一个月.假设前一个月的欠款是 \(s\),月利息为 \(d\),月末还款为 \(b\),那么下一个月的欠款就是 \(s\left(1+d\right)-b\). 很容易看出月利息越 ...

  8. [Python]环境配置之pip加速

    背景 学习 Python 的话,仅掌握标准库是远不够的,有很多好用的第三方库我们也需要用到的,比如,由鼎鼎大名的 K 神开发的爬虫必不可少的 requests 库,一般都是必装的库吧.安装第三方库当然 ...

  9. 【对不起】我并不是真的会用spring

    19年12月4日,为了测试另外一个部门的服务在注册到这边zk后能否拿到dubbo代理,在controller草草写了一个http服务请求之,发现所有的dubbo接口都没有被注入代理,排查许久之后,发现 ...

  10. Unity使用transform.Translate()移动子物体时遇到的小问题

    Unity使用transform.Translate()移动子物体时遇到的小问题 情况大概是这样:父物体A下有子物体B,希望使B在本地坐标系下移动1单位. B物体挂脚本代码如下: transform. ...