从后端获取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的运用的更多相关文章

  1. POI读取xls和xlsx

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import  ...

  2. 如何处理大体积 XLSX/CSV/TXT 文件?

    在开发过程中,可能会遇到这样的需求,我们需要从本地的 Excel 或 CSV 等文件中解析出信息,这些信息可能是考勤打卡记录,可能是日历信息,也可能是近期账单流水.但是它们共同的特点是数据多且繁杂,人 ...

  3. 121_Power Query之R.Execute的read.xlsx&ODBC

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.问题 pq在用 Excel.Workbook 读取一些Excel早期版本(.xls后缀)的文件时候,报错:DataFo ...

  4. jquery.uploadify文件上传组件

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

  5. java 用 jxl poi 进行excel 解析 *** 最爱那水货

    /** * 解析excel文件 ,并把数据放入数组中 格式 xlsx xls * @param path 从ftp上下载到本地的文件的路径 * @return 数据数组集合 */ public Lis ...

  6. Python+Selenium进行UI自动化测试项目中,常用的小技巧3:写入excel表(python,xlsxwriter)

    我们在项目中可能用到excel表生成,下面的代码就是对excel表的操作: import xlsxwriter import datetime class write_excel(): def __i ...

  7. excel读入数据库

    POI3.9效率大幅度提高,支持xls以及xlsx. 首先需要POI的JAR包,MAVEN配置如下: <!-- excel start --> <dependency> < ...

  8. java导出和读取excel数据

    使用的是poi的jar包 下载地址http://poi.apache.org/download.html 主要是把jar包导入,直接新建一个列子测试一下就明白了.使用起来还是比较方便的,代码里面的原理 ...

  9. Java POI读取Excel数据,将数据写入到Excel表格

    1.准备 首先需要导入poi相应的jar包,包括: 下载地址:http://pan.baidu.com/s/1bpoxdz5 所需要的包的所在位置包括: 2.读取Excel数据代码 package S ...

  10. 基于python的接口自动化测试+ddt数据驱动

    在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ...

随机推荐

  1. OODO有关账户account模块学习

    一.记账凭证(Account Move) 会计上的记账凭证,也叫会计分录,在Odoo中叫"Account Move".Account Move直译是"账户移动" ...

  2. pyinstaller打包exe

    1.执行环境说明 python版本3.7直接使用pip进行安装pywin32.pyinstallerpip install pywin32pip install pyinstaller 2.使用了第三 ...

  3. qq飞车端游最全按键指法教学

    目录 起步篇 超级起步 弹射起步 段位起步 基础篇 点飘 撞墙漂移 撞墙点喷 进阶篇 双喷 叠喷 断位漂移 段位双喷 侧身漂移 快速出弯 CW WCW CWW 牵引 甩尾点飘 甩尾漂移 右侧卡 左侧卡 ...

  4. 瞄准程序员招聘痛点,ShowMeBug让面试代码操作可“回放”

    程序员虽然是建设互联网的职业之一,但他们的招聘工作的线上化却有不少难题. 疫情加速了市场对远程办公.远程面试.远程教学等模式的接受程度,但程序员招聘涉及到代码能力测试,甚至不同企业有不同的产品代码基础 ...

  5. 如何使用Go中的Weighted实现资源管理

    1. 简介 本文将介绍 Go 语言中的 Weighted 并发原语,包括 Weighted 的基本使用方法.实现原理.使用注意事项等内容.能够更好地理解和应用 Weighted 来实现资源的管理,从而 ...

  6. 7-9 《Fibonacci 数列》

    7-9 <Fibonacci 数列> 思路:吃过前面<序列求和>问题的亏 但还是要尝试一下循环大法 Fn=Fn-1+Fn-2 定义int型 aFn-1 , bFn-2 , cF ...

  7. K8S | 核心原理分析

    目录 一.背景 二.持续集成 三.K8S架构 1.核心组件 2.分层结构 3.核心能力 3.1 发现与负载 3.2 调度 3.3 自动伸缩 四.应用案例 1.服务部署 2.交互流程 五.参考源码 整体 ...

  8. 基于 prefetch 的 H5 离线包方案

    前言 对于电商APP来讲,使用H5技术开发的页面占比很高.由于H5加载速度非常依赖网络环境,所以为了提高用户体验,针对H5加载速度的优化非常重要.离线包是最常用的优化技术,通过提前下载H5渲染需要的H ...

  9. Vue3从入门到精通(一)

    Vue3简介 Vue3是Vue.js的最新版本,于2020年9月18日正式发布.Vue3相比Vue2有很多改进和优化,包括但不限于: 更快的渲染速度:Vue3通过使用Proxy代理对象和优化虚拟DOM ...

  10. RALB负载均衡算法的应用

    一.背景 搜索推荐算法架构为京东集团所有的搜索推荐业务提供服务,实时返回处理结果给上游.部门各子系统已经实现了基于CPU的自适应限流,但是Client端对Server端的调用依然是RR轮询的方式,没有 ...