首页 > 其他分享 >xlsx和path的运用

xlsx和path的运用

时间:2023-09-05 19:55:23浏览次数:34  
标签:xlsx sheet form XLSX worksheet utils add 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,sheet,form,XLSX,worksheet,utils,add,path,运用
From: https://www.cnblogs.com/fanjiang/p/17680666.html

相关文章

  • Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档
    Node.js使用officecrypto-tool读取加密的Excel(xls,xlsx)和Word(docx)文档,还支持xlsx和docx文件的加密(具体使用看文档)。暂时不支持doc文件的解密传送门:officecrypto-tool读取加密的Excel示例一:xlsx-populate//只支持xlsx,xlsx-populate自带了解密功能,/......
  • 运用手机运营商二要素Api接口,守护您的账户和隐私,让您安心使用!
    随着移动互联网的普及,我们的生活离不开手机,手机成为了我们生活中不可或缺的一部分。但是随着移动支付的普及,手机支付在我们的生活中也变得越来越重要。手机支付是一种方便快捷的支付方式,但是也存在一些安全隐患。如果我们在使用手机支付时不小心泄露了我们的账户和隐私,那么后果不......
  • os.path.getmtime(file) 与 os.stat(file).st_mtime 的区别
    os.path.getmtime(file)和os.stat(file).st_mtime都用于获取文件的最后修改时间,但它们之间有一些区别:返回值类型:os.path.getmtime(file)返回的是一个浮点数,表示文件的最后修改时间,以秒为单位。os.stat(file).st_mtime返回的也是一个浮点数,表示文件的最后修改时间,以秒为单位。......
  • 【……挣扎】奇妙的位运算之异或的运用
    很震撼啊,上午c++第三题死活没想出来哪里来的最优算法,c无聊翻leetcode找到了难怪呢,O(N),那是够少的我是真不会位运算啊orz,但是很有趣,遂记(另:我讨厌leetcode的输入方式!以及,我看不懂,题解到底,在写些什么)先是,关于c++的位运算参考资料 https://blog.csdn.net/SenyeLicone/article/......
  • xpath数据解析
    xpath:最常用且最高效便捷的一种解析方式。语言通用性。数据解析需求首选XPath解析。path解析原理1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中2.调用etree对象的xpath方法结合着xpath表达式实现实现标签的定位和内容的捕获。一.环境的......
  • [ABC318G] Typical Path Problem 题解
    题意给定一个\(N\)个节点和\(M\)条边组成的简单无向联通图,给定三个节点\(A,B,C\),求是否存在一条简单路径满足\(A\rightarrowB\rightarrowC\)。(\(3\leN,M\le2\times10^5\))。题解因为简单路径要求每个节点至多经过一次,故不存在合法的简单路径当且仅当存在一个......
  • ABC318G Typical Path Problem
    给定无向连通图,问是否存在一条从\(A\)到\(C\)经过\(B\)的简单路径。\(n\le3\times10^5\)。怎么这个G这么简单我还没写完啊?怎么这个G这么简单我还没写完啊?怎么这个G这么简单我还没写完啊?怎么这个G这么简单我还没写完啊?怎么这个G这么简单我还没写完啊?怎么这......
  • 【从互联网商业思维的角度分析商业模式在国内各大互联网产品的运用】
    随着互联网技术的不断进步,互联网商业模式也在不断变化,各个互联网企业都在不断尝试各种商业模式,以满足不同消费者群体的需求,提高企业营销效益,下面我们将从互联网商业思维的角度,分析一下商业模式在国内各大互联网产品的运用。一、电商模式电商模式是指在互联网上建立电子商务平台,通......
  • 前端使用xlsx插件读取excel文件数据
    安装xlsx插件npminstallxlsx导入xlsximportXLSXfrom'xlsx'前端UI如下:<bk-upload:tip="'只允许上传JPG、PNG、JPEG的文件'":with-credentials="true":accept="'.xlsx,.xls'"@c......
  • SQL语句的学习运用
    回顾投影查询SELECT20DIV10ASres;SELECTDISTINCTs_sexFROM_stu;SELECTs_name,s_sexFROM_stu;投影查询之函数mysql经常做的一些操作编写出来--封装起来--函数 提供了很多的功能函数分为两类 单值函数【一个或者零个参数进一个结果返回】 数学函数 字......