从后端获取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. y总算法基础课+算法提高课+算法进阶课超全模板

    y总超全算法模板 y总模板自取 喜欢的可以点个赞支持一下^-^ 模板展示

  2. docker +node 部署vue项目的心路历程

    最近自己做了个小项目,试着使用docker来进行发布,而其中用到了node做跨越代理,就是为了解决这个问题至少多花费了我一天时间,不说了直接进入主题吧 step 1 部署环境 1 安装 centos ...

  3. HyperPlatform

    之前也写过一个vt的框架,但是比较简单,写的比较乱迁移什么的比较麻烦,于是阅读下HyperPlatform的源码学习下. 本文只对主体框架分析. vt的流程大概如下 1:检测是否支持VT. 2:vmx ...

  4. 一分钟学一个 Linux 命令 - pwd

    前言 大家好,我是 god23bin.欢迎大家继续围观<一分钟学一个 Linux 命令>,每天只需一分钟,记住一个 Linux 命令不成问题.本篇文章将聚焦于 pwd 命令,一个超级简单又 ...

  5. 驱动开发:内核PE结构VA与FOA转换

    本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA,RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还 ...

  6. opencv图像显示问题

    opencv 的图像类型都是numpy array.dtype = uint8. 如果是默认的python的int类型的numpy array,即使每个整数都在范围0-255, 图像也不会显示,必须转 ...

  7. Dotnet9网站回归Blazor重构,访问速度飞快,交互也更便利了!

    大家好,我是沙漠尽头的狼. Dotnet9网站回归Blazor重构,访问速度确实飞快,同时用上Blazor的交互能力,站长也同步添加了几个在线工具,这篇文章分享下Blazor的重构过程,希望对大家网站 ...

  8. WPF 入门笔记 - 06 - 命令

    我们把世界看错,反说它欺骗了我们. --飞鸟集 前言 相较而言,命令对我来说是一个新概念,因为在Winform中压根没有所谓的命令这个概念.从文字角度理解,"命令"可以指代一种明确 ...

  9. AI-2预备知识

    2.1数据操作笔记 PyTorch和TensorFlow中的Tensor类型可做为张量使用,可支持GPU操作和自动微分. 广播机制:对不同形状的张量可使用广播机制进行运算. 为节省内存,可使用 X[: ...

  10. 【干货向】我想试试教会你如何修改Git提交信息

    Git是目前IT行业使用率最高的版本控制系统,相信大家在日常工作中也经常使用,每次Git提交都会包含提交信息,常用的包括说明.提交人和提交时间等,此篇文章主要向大家介绍下如何修改这些信息,这些命令在正 ...