xlsx和path的运用
从后端获取Excel模板
app.get('/api/download-template', (req, res) => {
    const templatePath = path.join(__dirname, './datafile/example.xlsx');
    res.download(templatePath);
  });
在前端页面,表单采用Elementui设计。利用axios接收Excel 模板文件 URL。填写表单,将信息存储在Excel模板文件中,并且下载下来。
<template>
  <div class="farther">
    <el-form ref="form" :model="form" label-width="80px">
      <el-form-item label="设备名称">
        <el-input v-model="form.eqname"></el-input>
      </el-form-item>
      <el-form-item label="规格型号">
        <el-input v-model="form.modelsize"></el-input>
      </el-form-item>
      <el-form-item label="设备编号">
        <el-input v-model="form.eqnumber"></el-input>
      </el-form-item>
      <el-form-item label="监测地点">
        <el-input v-model="form.addr"></el-input>
      </el-form-item>
      <el-form-item label="企业名称">
        <el-input v-model="form.company"></el-input>
      </el-form-item>
      <el-form-item label="运行单位">
        <el-input v-model="form.yxdw"></el-input>
      </el-form-item>
      <el-form-item label="维护内容">
        <el-input v-model="form.content"></el-input>
      </el-form-item>
      <el-form-item label="日期">
        <el-date-picker
          type="date"
          placeholder="选择日期"
          v-model="form.date"
          style="width: 100%"
        ></el-date-picker>
      </el-form-item>
      <el-form-item label="查询日志">
        <el-select v-model="form.journal" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="×"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="检查耗材">
        <el-select v-model="form.haoc" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="站房卫生">
        <el-select v-model="form.weis" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="站房门窗的密封性检查">
        <el-select v-model="form.mifeng" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="供电系统">
        <el-select v-model="form.gdian" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="室内温湿度">
        <el-select v-model="form.shid" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="空调">
        <el-select v-model="form.ktiao" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="自来水供应情况">
        <el-select v-model="form.gyqk" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="采样泵采水情况">
        <el-select v-model="form.csqk" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="采样管路通畅">
        <el-select v-model="form.cytc" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="自动清洗装置运行情况">
        <el-select v-model="form.yunx" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="排水管路通畅">
        <el-select v-model="form.pais" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="清洗采样泵、过滤装置">
        <el-select v-model="form.guol" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="清洗采样管路、排水管路">
        <el-select v-model="form.caiy" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="仪器报警状态">
        <el-select v-model="form.baoj" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="仪器状态参数检查">
        <el-select v-model="form.ztai" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="仪器外观检查">
        <el-select v-model="form.wguan" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="仪器内部管路通畅">
        <el-select v-model="form.tchang" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="仪器进样、排液管路清洁检查">
        <el-select v-model="form.jiancha" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="检查电极标准液、内充液">
        <el-select v-model="form.yeti" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="清洗电极头">
        <el-select v-model="form.qingxi" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="数据采集系统报警信息">
        <el-select v-model="form.xinxi" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="数据上传情况">
        <el-select v-model="form.changchuan" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="数据采集情况">
        <el-select v-model="form.qingkuang" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="检查数采仪和仪器的连接">
        <el-select v-model="form.lianjie" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="检查上传数据和现场数据的一致性">
        <el-select v-model="form.yizhi" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="数据采集、传输设备电源">
        <el-select v-model="form.dainyaun" placeholder="请选择情况">
          <el-option label="正常" value="√"></el-option>
          <el-option label="不正常" value="X"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="downloadExcel">生成并下载</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
import * as XLSX from 'xlsx';
import http from '@/utils/request';
export default {
  data() {
    return {
      form: {
        eqname: '',
        modelsize: '',
        eqnumber: '',
        addr: '',
        company: '',
        yxdw: '',
        content: '',
        date: '',
        journal: '',
        haoc: '',
        weis: '',
        mifeng: '',
        gdian: '',
        shid: '',
        ktiao: '',
        gyqk: '',
        csqk: '',
        cytc: '',
        yunx: '',
        pais: '',
        guol: '',
        caiy: '',
        baoj: '',
        ztai: '',
        wguan: '',
        tchang: '',
        jiancha: '',
        yeti: '',
        qingxi: '',
        xinxi: '',
        changchuan: '',
        qingkuang: '',
        lianjie: '',
        yizhi: '',
        dainyaun: '',
      },
      excelTemplateUrl: '', // 后端返回的 Excel 模板文件 URL
    };
  },
  methods: {
    async downloadExcel() {
      console.log('获取模板');
      try {
        // const response = await axios.get('/api/download-template', { responseType: 'arraybuffer' });
        await http.get('/download-template', { responseType: 'arraybuffer' })
          .then(({ data }) => {
            const excelData = new Uint8Array(data);
            const workbook = XLSX.read(excelData, { type: 'array' });
            const worksheet = workbook.Sheets['Sheet1'];
            // 在 Excel 模板中填充表单数据
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.eqname]], { origin: 'C2' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.modelsize]], { origin: 'H2' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.eqnumber]], { origin: 'C3' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.addr]], { origin: 'H3' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.company]], { origin: 'C4' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.yxdw]], { origin: 'H4' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.content]], { origin: 'C5' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.date]], { origin: 'E6' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.journal]], { origin: 'D8' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.haoc]], { origin: 'D9' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.weis]], { origin: 'D10' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.mifeng]], { origin: 'D11' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.gdian]], { origin: 'D12' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.shid]], { origin: 'D13' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.ktiao]], { origin: 'D14' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.gyqk]], { origin: 'D15' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.csqk]], { origin: 'D16' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.cytc]], { origin: 'D17' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.yunx]], { origin: 'D18' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.pais]], { origin: 'D19' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.guol]], { origin: 'D20' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.caiy]], { origin: 'D21' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.baoj]], { origin: 'D22' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.ztai]], { origin: 'D23' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.wguan]], { origin: 'D24' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.tchang]], { origin: 'D25' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.jiancha]], { origin: 'D26' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.yeti]], { origin: 'D27' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.qingxi]], { origin: 'D28' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.xinxi]], { origin: 'D29' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.changchuan]], { origin: 'D30' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.qingkuang]], { origin: 'D31' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.lianjie]], { origin: 'D32' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.yizhi]], { origin: 'D33' });
            XLSX.utils.sheet_add_aoa(worksheet, [[this.form.dainyaun]], { origin: 'D34' });
            // 其他字段的填充,可以参考上面的示例进行添加
            const excelOutputData = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
            const blob = new Blob([excelOutputData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
            const url = URL.createObjectURL(blob);
            const link = document.createElement('a');
            link.href = url;
            link.setAttribute('download', 'result.xlsx');
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
          })
      } catch (error) {
        console.error(error);
      }
    },
  },
};
</script>
<style scoped lang="less">
* {
  margin: 0;
  padding: 0;
}
.farther {
  height: 100%;
  width: 100%;
  overflow-y: scroll; /* 启用垂直滚动条 */
}
</style>
xlsx和path的运用的更多相关文章
- POI读取xls和xlsx
		import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ... 
- 如何处理大体积 XLSX/CSV/TXT 文件?
		在开发过程中,可能会遇到这样的需求,我们需要从本地的 Excel 或 CSV 等文件中解析出信息,这些信息可能是考勤打卡记录,可能是日历信息,也可能是近期账单流水.但是它们共同的特点是数据多且繁杂,人 ... 
- 121_Power Query之R.Execute的read.xlsx&ODBC
		博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.问题 pq在用 Excel.Workbook 读取一些Excel早期版本(.xls后缀)的文件时候,报错:DataFo ... 
- jquery.uploadify文件上传组件
		1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ... 
- java  用 jxl  poi  进行excel 解析  *** 最爱那水货
		/** * 解析excel文件 ,并把数据放入数组中 格式 xlsx xls * @param path 从ftp上下载到本地的文件的路径 * @return 数据数组集合 */ public Lis ... 
- Python+Selenium进行UI自动化测试项目中,常用的小技巧3:写入excel表(python,xlsxwriter)
		我们在项目中可能用到excel表生成,下面的代码就是对excel表的操作: import xlsxwriter import datetime class write_excel(): def __i ... 
- excel读入数据库
		POI3.9效率大幅度提高,支持xls以及xlsx. 首先需要POI的JAR包,MAVEN配置如下: <!-- excel start --> <dependency> < ... 
- java导出和读取excel数据
		使用的是poi的jar包 下载地址http://poi.apache.org/download.html 主要是把jar包导入,直接新建一个列子测试一下就明白了.使用起来还是比较方便的,代码里面的原理 ... 
- Java POI读取Excel数据,将数据写入到Excel表格
		1.准备 首先需要导入poi相应的jar包,包括: 下载地址:http://pan.baidu.com/s/1bpoxdz5 所需要的包的所在位置包括: 2.读取Excel数据代码 package S ... 
- 基于python的接口自动化测试+ddt数据驱动
		在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ... 
随机推荐
- python -- pandas常见的一些行、列操作方法(感兴趣的,可以跟着一起练练手)
			这篇文章分享一下pandas常见的一些行.列操作方法,比较基础,感兴趣的童鞋可以看看. 首先,我们用 "random.seed(int i)" 生成一组测试数据. 对于random ... 
- HNU2019 Summer Training 3 E. Blurred Pictures
			E. Blurred Pictures time limit per test 2 seconds memory limit per test 256 megabytes input standard ... 
- Elasticsearch与Clickhouse数据存储对比
			1 背景 京喜达技术部在社区团购场景下采用JDQ+Flink+Elasticsearch架构来打造实时数据报表.随着业务的发展Elasticsearch开始暴露出一些弊端,不适合大批量的数据查询,高频 ... 
- 又爱又恨的 Microsoft Edge!
			早在< 使用码云同步谷歌 Chrome 浏览器书签 · 语雀>中就吐槽过 win7 下安装 Microsoft Edge 一大堆错误代码的问题,一直都折腾不出个所以然.然而公司的 PC 一 ... 
- 华为云新一代分布式数据库GaussDB,给世界一个更优选择
			摘要:与伙伴一起,共建繁荣开放的GaussDB数据库新生态. 本文分享自华为云社区<华为云新一代分布式数据库GaussDB,给世界一个更优选择>,作者:华为云头条. 6月7日,在华为全球智 ... 
- Python modbus_tk 库源码分析
			modbus_tk 源代码分析 前言 modbus_tcp 协议是工业项目中常见的一种基于 TCP/IP 协议的设备数据交互协议. 作为 TCP/IP 协议的上层协议,modbus_tcp 协议涉及到 ... 
- CANoe学习笔记(二):创建第一个事件触发帧(基于LIN)
			内容: 创建一个事件触发帧: 包含几个不同无条件帧: 事件触发帧的触发: 事先准备: 创建三个文件夹,用来放不同类型文件: 工程创建 新建一个Lin工程,双击即可,然后命名为LINconf保存. 创建 ... 
- 智能合约HardHat框架环境的搭建
			1.首先创建一个npm项目 PS C:\Users\lcds\blockchainprojects> mkdir hardhatcontract PS C:\Users\lcds\blockch ... 
- 一文了解Go语言的I/O接口设计
			1. 引言 I/O 操作在编程中扮演着至关重要的角色.它涉及程序与外部世界之间的数据交换,允许程序从外部,如键盘.文件.网络等地方读取数据,也能够将外界输入的数据重新写入到目标位置中.使得程序能够与外 ... 
- 介绍Vue router的history模式以及如何配置history模式
			引言 Vue router给我们提供了两种路由模式,分别是hash模式和history模式.其中默认是使用hash模式,即URL中带有一个#符号,但是处于业务或个人喜爱的差别,Vue router也提 ... 
