首页 > 编程语言 >nodejs koa框架下载和导入excel

nodejs koa框架下载和导入excel

时间:2023-06-02 10:15:44浏览次数:45  
标签:xlsx const .. nodejs koa require excel return 度量

ac.js

const service = require("../service/model.service");
const urlencode = require("urlencode");
const helper = require("../../utils/helper");
module.exports = {
   /**
 * @description: 下载导入度量模板
 * @param {type} 
 * @return: 
 */
   "GET /model/metricsDown": async (ctx, bean) => {
      let excel = await service.metricsDown(bean);
      if (!excel) {
         throw new Error("下载失败");
      }
      let name = urlencode(excel.sheetName + '.xlsx', "utf-8");
      ctx.response.set(
         "Content-Disposition",
         "attachment; " + helper.setDownLoadFilename(ctx.req.headers["user-agent"], name)
      );
      ctx.response.body = excel.buffer; // 返回在响应体里
   },
   /**
   * @description: 导入度量
   * @param {type} 
   * @return: 
   */
   "POST /model/metricsImport": async (ctx, bean) => {
      const file = ctx.request.files.file; // 获取上传文件
      let result = await service.metricsImport(file, bean);
      return result
   },
}

serve.js

const dao = require("../dao/model.dao");
const mysql = require("mysql");
const h = require("../../utils/helper");
const { v4: uuidv4 } = require('uuid');
const xlsx = require("node-xlsx");
const path = require('path');
const fs = require('fs');
module.exports = {
   /**
  * @description: 下载导入度量模板
  * @param {*} need
  * @return {*}
  */
   async metricsDown() {
      var data = [['度量名称', '度量英文名', '度量SQL'], ['必填项', '必填项', '必填项']];
      const sheetName = '导入度量模板';
      var buffer = xlsx.build([{ name: sheetName + ".xlsx", data: data }]);
      return {
         sheetName,
         buffer,
      };
   },
   /**
 * @description: 导入度量
 * @param {*} need
 * @return {*}
 */
   async metricsImport(file, params) {
      // 创建可读流
      if (!params.fileName || !params.code) throw new Error("参数不合法!!!");

      const reader = fs.createReadStream(file.path);
      if (!params.fileName.endsWith('xls') && !params.fileName.endsWith('xlsx')) {
         throw new Error('请上传xls或xlsx格式的文件');
      }
      let filePath = path.join(__dirname, "../../../download/") + `${file.name}`;
      // 创建可写流
      const upStream = fs.createWriteStream(filePath);
      // 可读流通过管道写入可写流
      reader.pipe(upStream);
      return filePath
   },
}

 

标签:xlsx,const,..,nodejs,koa,require,excel,return,度量
From: https://www.cnblogs.com/ht955/p/17450970.html

相关文章

  • 包含58个分类的6万多古诗词典ACCESS\EXCEL数据库
    这个数据库中不但包含了常规的朝代、作者、教材分类之外,还有诗集和分类字段。诗集检索可以让用户选择喜欢的诗集开始诵读。类型检索是指按诗歌的题材检索,如果你在写作时想引用诗句,类型检索会效率很多。朝代有:先秦、两汉、魏晋、南北朝、隋代、唐代、五代、宋代、金朝、元代、明......
  • springboot打包jar文件运行后无法读取jar目录中的Excel模板文件
    原因:SpringBoot内嵌web容器,其特点是只有一个jar文件,在容器启动后不会解压缩。解决方式:1.必须使用相对路径读取文件;假设你的模板文件放在了resources—>templates—>xlsx—>test.xlsx2.只能使用流去读取,不能用file;//jar里面文件读取方式: ClassPathResourceclassPathRes......
  • Excel数据合并与拆分
    1.合并1——文件格式完全相同之全部合并#导入工具包importpandasaspdimportos#新建空列表,用来存储所有的列表数据df_list=[]#循环读取Excel/csv/txt等文件foriinos.listdir('./'):#遍历当前代码所在文件,可提供具体文件夹路径ifi.split('.')[-......
  • Excel转CSV格式
    注意:CSV文件导出来的可以理解为就是一个普通的文件,但至于使用什么样的软件打开就是另一马事了,比如Excel打开后出来“自动过滤了数字前面的0”,这玩意程序控制不到,那是Excel的事情。CSV不是Excel文件切记,只不过用表格软件打开CSV而已importorg.apache.poi.hssf.usermodel.HSS......
  • Springboot整合EasyPOI操作Excel文件
    配合官网阅读本文源码POI官网文档效果图:本文只做一个案列的操作:pom依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--EasyPoi导入导......
  • .Net NPOI Excel 导出
    NPOI导出Excel最终效果图   环境:Revit,WPF,NPOI2.5.6,.NetFramework4.7.2一、引用NPOI 右击项目引用,选择"管理NuGet程序包",在浏览搜索NPOI,选择版本(我这里是2.5.6),安装   安装成功后,引用里会出现这四个引用(NPOI,NPOI.OOXML,NPOI.OpenXml......
  • vue xlsx组件 导出的excel表头插入内容
    主要就是sheet_add_dom这个方法,dom是带有table标签元素的dom节点。timeData是个二维数组:[["条件1","条件2"],["值1","值2"]];如果是要在表格内容行里面插入内容,可以直接在与表格绑定的对象上,插入内容就可以了。/*timeData是二维数组*/getExcelWithInfo(timeData,dom,tit......
  • Excel打印封装
    准备部分1、安装依赖npminstallvue-print-nb--save2、main.js全局安装importPrintfrom'vue-print-nb'Vue.use(Print);组件部分/components/ExcelForm.vue<template><div><divclass="btn"><el-buttonsize="......
  • 上万条美容知识大全ACCESS\EXCEL数据库
    今天采集了一个美容知识大全的网站,网站里的内容主要是美容化妆类的文章,分类有近百个,是个可以受女生喜欢的内容。截图包含所有字段。分类统计情况为:瘦腿方法(793)、美白(615)、瘦腰(583)、上班族(472)、抗衰老(453)、男士美容(421)、瘦脸(355)、翘臀(345)、防晒(256)、瘦臂(244)、补水(241)、保湿(229)、......
  • 30万个名字汉字起名中文取名ACCESS\EXCEL数据库
    虽然汉字#起名名字#的数据库已经有一些,比如7千多汉字起名参考大典ACCESS数据库、汉字起名中文起名宝宝起名ACCESS数据库,但是今天发现了一个数据库,他是在《7千多汉字起名参考大典》的基础上增加了30万个男孩女孩的名字实例。非常适合于比如固定了名字的第二个字,取第三个字时一查就......