Element ui表格导出Excel 以及遇到的坑

项目中遇到需要导出excel的需求
首先安装依赖

首先安装依赖项:
npm install -S file-saver xlsx
或者是以下命令,这两个命令一样。
npm install --save xlsx file-saver

file-saver:保存文件
xlsx:电子表格解析器

接下来我们开始写一个表格,给表格一个id(项目中用到id并没有多大用,不知道是哪里的问题 总之先带着还是没毛病的)

<el-table :data="meterList" style="width: 100%" border id="listname">
        <el-table-column type="index" label="编号"></el-table-column>
        <el-table-column label="仪表编号" prop="prop仪表编号"></el-table-column>
        <el-table-column label="瞬时热量" prop="prop瞬时热量"></el-table-column>
</el-table>

引入依赖

// 在script中引入
import fileSaver from 'file-saver'
import xlsx from 'xlsx'

然后在methods中写如下方法,注意替换id

//下载表格
exportExcel(){
/* 从表生成工作簿对象 */
    var xlsxParam = { raw: true } // 导出的内容只做解析,不进行格式转换,保证时间格式或者较长数字不会出现科学计数法。(这个很关键)
	var wb = XLSX.utils.table_to_book(document.querySelector("#listname"),xlsxParam);
	/* 获取二进制字符串作为输出 */
	var wbout = XLSX.write(wb, {
		bookType: "xlsx",
		bookSST: true,
        type: "array"
        });
        try {
          FileSaver.saveAs(
            //Blob 对象表示一个不可变、原始数据的类文件对象。
            //Blob 表示的不一定是JavaScript原生格式的数据。
            //File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
            //返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
            new Blob([wbout], { type: "application/octet-stream" }),
            //设置导出文件名称
            "导出文件名称.xlsx"
          );
        } catch (e) {
		if (typeof console !== "undefined") console.log(e, wbout);
	}
	return wbout;
},

以上则是导出excel的关键代码
但这样 做出来的导出的excel是无法进行求和运算等等操作的
在这里插入图片描述
如果把{raw:true}改成false.导出的结果 可能就变成了科学计数法。也就是类似于乱码。如下图
在这里插入图片描述
转换成excel的时候使用原始的格式

如果发现导出的excel实际上是无法进行求和等运算之类的。有两种方法可以暂时性的解决想要求和等运算
因这种导出的excel与原本excel的储存方式不同。存贮方式不是以数字型进行保存的,导出为EXCEL后,很多无法直接求和
因此需要将导出的excel数值转化成数字。

以下是excel层面的知识…
在这里插入图片描述
我们在单元格输入公式sum(–A2:A7),而后确定,我们发现数字出来了,但是只有第一行的数据,因为我们–将A2的数据,进行了转换
在这里插入图片描述
方法二
主要原因为系统导出的是文本型的数字,我们需要将其转换为数字,首先我们选中数据区域。右侧会出来了一个感叹号,我们点击,出现选项,找到其中的一项将数据类型转换为数值
在这里插入图片描述
转换后我们发现所有的数值,都是靠右侧排列的
在这里插入图片描述

但是代码层次如何解决 导出excel的东西无法进行求和,还没有找到是否有相关的配置项,如果有的话,会有后续的更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值