也是别人写的框架自己,自己忽然要用到,给改了下,具体框架怎么写的 也没细看,会用就行 以下 我尽可能把我知道的都写一下

1.先看下效果

在node环境下(实际就是安装了node软件) 设置环境变量 让node在任意路径都可以执行node命令(可以用 node -v测试)

双击运行auto.bat 即可生成:


这个框架依赖 第一个图的 ejs4xlx.js ejsExcel.js filter.js

auoExcel.js 是我写的 我仔细说一下 这个

1.先引入需要模块

const ejsexcel = require("./ejsExcel");
const fs = require("fs");
const util = require("util");
const http = require('http');
const url = require('url');
const readFileAsync = util.promisify(fs.readFile);
const writeFileAsync = util.promisify(fs.writeFile);
复制代码

2.获取api数据 跟ajax获取数据是一样的 但是又不是ajax 因为那是浏览器对象 node是没有window.ActiveXObject或者window.XMLHttpRequest对象 以下是get请求 post 也差不多

(请求地址 我就不说了 不能给)

function getdata(type,nextfn){var urlstr ='http://*******&type='+type.index+'';http.get(urlstr, (res) => {var data = ''; //接口数据  res.on('data', (chunk) => {data += chunk; //拼接数据块  });res.on('end', function() {let redata = JSON.parse(data); //解析json if(redata.msg == 'SUCCESS'){reflashdata(redata,type,nextfn);}else{console.log('-------------------获取数据失败-----------------');}})}).on('error', () =>console.log('获取数据出错!'));
}
复制代码

3.get到数据后,执行reflashdata(redata,type,nextfn); 对数据进行以下清洗 变成自己想要的这样的数据格式

function reflashdata(redata,typeobj,nextfn){var alldata = [[{"name":typeobj.name+"价格走势"}],[]];for(var i=0;i<redata.data.length;i++){var item={"day":"","a":"","b":"","c":"","d":"","e":""};item.day=new Date(redata.data[i].datetime*1000).format('MM-dd');item.a=parseInt(redata.data[i].history_price)+"/吨";...alldata[1].push(item);}nextfn(alldata);
}
复制代码

最后的数据格式是:

[[{"name":"棉花价格走势"}],[{"day":"05-30","a":"16323/吨","b":"","c":"","d":"","e":"14786/吨"},{"day":"05-31","a":"","b":"16323/吨","c":"16323/吨","d":"16323/吨","e":"14813/吨"}]]

因为我要生成 多个excel所以for循环里 执行多次获取数据 生成excel

function autoExcelfn() {var arr=[{"index":2,"name":'棉花'},{"index":1,"name":'玉米'},{"index":5,"name":'大豆'},{"index":23,"name":'春小麦'},{"index":2,"name":'水稻'}];var nowday=(new Date()).format('yyyy-MM-dd');fs.mkdirSync("./../农作物价格走势/"+nowday);for(var i in arr){//获得Excel模板的buffer对象//数据源(function(i){getdata(arr[i],function(data){(async function(data) {const exlBuf = await readFileAsync("./template1.xlsx");var exlBuf2 =await ejsexcel.renderExcel(exlBuf, data);await writeFileAsync("./../农作物价格走势/"+nowday+"/"+arr[i].name+"价格走势"+".xlsx", exlBuf2);})(data);});})(i)}console.log("生产成功!----------------------");
}
autoExcelfn();
复制代码

在获取数据的方法getdata的回调里 把整理好的数据 data 写到 excel,并生成excel文件

fs.mkdirSync("./../农作物价格走势/"+nowday); 在'./../农作物价格走势/' 生成 ‘2018-06-14’ 文件夹

const exlBuf = await readFileAsync("./template1.xlsx");读取模版excel

var exlBuf2 =await ejsexcel.renderExcel(exlBuf, data); 根据模版 填充数据

await writeFileAsync("./../农作物价格走势/"+nowday+"/"+arr[i].name+"价格走势"+".xlsx", exlBuf2); 写入

4.excel模版写法 相当于表格里写变量 数据根据变量位置 遍历循环

不上传我的项目了 大家直接下载源文档 研究吧

项目地址:https://gitee.com/ccteams/ejsExcel

node 抓取api数据导出为excel表格相关推荐

  1. 虎牙直播抓取,数据保存到Excel表格中

    前言 此篇文章之前已经写过关于虎牙直播的抓取分析了,详情请访问https://blog.csdn.net/MarkAdc/article/details/90048758 代码 import requ ...

  2. vb 读取oracle中的表格数据,如何将数据库信息读取导出excel表格中-VB 从SQL数据库中把数据导出到Excel表格中,怎么写?...

    VB 从SQL数据库中把数据导出到Excel表格中,怎么写? INSERT INTO OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=&q ...

  3. 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件

    目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...

  4. 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...

    如何将百度指数数据导出到Excel表格 第一步:打开CAD.CAD命令行输入"Li"."选择对象"选需要提取坐标的多段线.回车. 第二步:将CAD文本框中的数据 ...

  5. php怎么将表格导出到excel表格,php怎么将excel表格数据-php 怎么把数据导出到excel表格...

    如何使用php实现将数据从excel表导入到mysql中? /** * @param array $data //二维数组 不是对象 * @param string $filename //导件 */ ...

  6. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...

    php 怎么把数据导出到excel表格 php 把数据导出到excel表多种方法如使用 phpExcel 等,以下代码是直接通 header 生成 excel 文件的代码示例: header(&quo ...

  7. 查询php 输出表格,php输出excel表格数据-PHP如何将查询出来的数据导出成excel表格(最好做......

    PHP如何将查询出来的数据导出成excel表格(最好做... php 把数据导出excel表格有多种方法,使用 phpExcel 等,以下代码接通过 header 生成 excel 文件的代码示例: ...

  8. php 输入表格数据,怎样将导出数据输入Excel 表格-php 怎么把数据导出到excel表格...

    如何将word文档中的数据导入到excel表格中 方法如下: 1.首先,打开媒介工具"记事本",将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中 ...

  9. 表格导出计算机,电脑怎么导出excel表格数据-如何将百度指数数据导出到Excel表格...

    系统没有导出功能,电脑表格里的数据有什么方法拿... 将网页表格数据导入到Excel中的方法: 第一步,将包括所需表格的网页打开,并按CTRL C把网址复制到剪贴板,以备下一步使用. 第二步,打开运行 ...

最新文章

  1. redis安装 redis命令 php如何使用redis
  2. VC++ 常用编程技巧总结
  3. ACE入门---很好的文章
  4. 怎么把视频里的音乐提取出来
  5. C# AutoResetEvent
  6. Android Animation实现元素在屏幕上按照指定轨迹运动,以及出现NullPointerException的解决方案
  7. 两个二进制数异或的结果
  8. 北航校赛2014 预赛 题解
  9. Oracle 10g新特性
  10. pr调色预设_视频调色不好掌握?用这2000套PR、AE、达芬奇调色预设吧
  11. LeetCode 中级 - 第k个排列(60)
  12. linux系统支持什么格式的软件吗,UOS系统支持什么样的软件包格式:其实Deb,Rpm,Tar.gz源码包都行...
  13. Matlab/Python两方,三方甚至四方演化博弈仿真图及 代码 演化博弈敏感性分析仿真图及相轨迹图/相位图及代码
  14. day03--面向对象--类的继承
  15. mysql57压缩包安装教程
  16. 【ML从入门到入土系列01】概述
  17. ZYNQ PS GPIO MIO 基础知识
  18. 蓄力-利用POI进行excel的导入导出(包含图片)
  19. 根据卡号查询所属银行
  20. 客服对于Kindle电子书的退货、倒闭、VR等问题的回答

热门文章

  1. 一个java中HashMap和HashSet的应用实例
  2. USACO-Section1.3 Dual Palindromes (进制转换和回文数)
  3. JS 向未声明的变量分配值(可删除)
  4. 安装visual studio code(VS Code)并修改为中文
  5. nginx https ssl 配置
  6. SuperSocket 1.4系列文档(17) 在Windows Azure中运行SuperSocket
  7. [*转*] 开发B2C电子商务系统(ASP.NET)--多年前的老文章
  8. 图灵奖得主Bengio:深度学习让AI得以推理和想象,不会被取代
  9. 人人都可以创造自己的AI:深度学习的6大应用及3大成熟领域
  10. Simulink之门极关断晶闸管(GTO)