Node导出excel小窍门

本文介绍了在Node.js环境中导出Excel文件的两种方法。第一种是在项目内部使用fs, path和excel-export库实现。第二种方法是通过浏览器下载,强调了文件名含有中文时需转码,并且必须使用GET请求,避免使用POST或AJAX,因为这可能导致无法预料的问题。" 1018114,102710,Ubuntu环境下GCC与G++的安装教程,"['Ubuntu', 'Linux', 'GCC', 'G++', '编译器']
摘要由CSDN通过智能技术生成

这边介绍两种方式

下载在项目中

通过浏览器下载(重点)

在项目中

第一步: 引入

const fs = require("fs");

const path = require("path");

const nodeExcel = require('excel-export');

let conf = {};
var fileName = “xxxx”+ ".xlsx";
conf.name = “xxx”;//表格名 
var alldata = []; 
alldata.push("数据库查询的值"); 
//决定列名和类型
conf.cols = [{
    caption: 'Id',
    type: 'string',
    width: 20

}, {
    caption: '累计流量(m³)',
    type: 'string',
    width: 20

}];
conf.rows = alldata;//填充数据
var result = nodeExcel.execute(conf);  //数据格式转换

第一种基本上没什么问题 也没什么需要注意的事项
fs.access(path.join(__dirname, fileName), err => {
          if (err) {
              //文件不存在
              //将buffer文件生成excel表格
              //生成表格
              fs.writeFile(path.join(__dirname, fileName), result, 'binary', function (err) {
                  if (err) {
                      console.log('写入错误');
                  }
                  resolve(result)
              })
          } else {
              //文件存在,删除文件
              fs.unlink(path.join(__dirname, fileName), err => {
                  //生成表格
                  fs.writeFile(path.join(__dirname, fileName), result, 'binary', function (err) {
                      if (err) {
                          console.log('写入错误');
                      }
                      resolve(result)
                  })
              })
          }
      })

第二种浏览器下载  

注意点1 文件名称如果带中文一定要转码

注意点2 重中之重 只能用get请求 用ajax访问不管你是get 或者 post请求 调试你会怀疑人生没有任何的报错 

let res =new Buffer(result,'binary'); 
ctx.response.set('Content-Type', 'application/octet-stream');
name = urlencode(station[0].station_name + " " + station[0].identifier + " " + Year + "-" + Month + "-" + Day + '.xlsx', "utf-8");
ctx.response.set("Content-Disposition", "attachment; filename* = UTF-8''"+ name);
ctx.body = res;

前端访问

var url = '';

window.location.replace(url);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值