js将element的table表导出为excel

博客介绍了在Vue中实现表格数据下载的代码操作。由于Vue渲染DOM需要时间,不能直接定义先下载的表格,需将JS操作放到setTimeout中。同时,element表格表头和表单分开,还需对表单数据进行拼接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码

<el-table
                            :data="item.data"
                            cell-class-name="itemTd"
                            row-class-name="itemRow"
                            style="width: 100%"
                        >
                            <el-table-column prop="name" :label='"sku名称" + "(" + item.name + ")"'></el-table-column>
                            <el-table-column prop="sales" label="必笔数" width="150"></el-table-column>
                            <el-table-column prop="value" width="150" label="笔数占比(%)"></el-table-column>
                        </el-table>

<a id="downland">导出全部</a>

 只要左边的表格就行了

因为vue渲染dom需要一定的时间所以不能直接定义先下载的表格因为获取不到table标签,所以我将js的操作放到了setTimeout中
element的表格中表头和表单是分开的所以还需要对表单数据进行拼接。

setTimeout(function() {
                        let str = null
                        for(let i = 0;i < document.getElementsByTagName("table").length;i++) {
                            str = str + document.getElementsByTagName("table")[i].outerHTML
                        }
                        var html = "<html><head><meta charset='utf-8' /></head><body>" + str + "</body></html>";
                        // 实例化一个Blob对象,其构造函数的第一个参数是包含文件内容的数组,第二个参数是包含文件类型属性的对象
                        var blob = new Blob([html], { type: "application/vnd.ms-excel" });
                        var a = document.getElementById("downland");
                        // 利用URL.createObjectURL()方法为a元素生成blob URL
                        a.href = URL.createObjectURL(blob);
                        // 设置文件名
                        a.download = "商品sku统计.xls";
                    },50)

成果:

 

### 使用Element UI将Table组件数据导出Excel文件 为了实现这一目标,需安装必要的依赖项。通过命令`npm install --save xlsx`和`npm install file-saver`来完成对`xlsx`以及`file-saver`这两个包的安装[^5]。 在具体页面中引入这些依赖: ```javascript import FileSaver from 'file-saver'; import * as XLSX from 'xlsx'; ``` 确保格拥有唯一的ID以便于后续操作DOM节点时能够准确定位到该格元素[^3]。对于含有特殊字符的数据列,比如百分比形式的数据,在导出设置里加入 `{raw: true}` 参数防止其被错误解析成数值型数据。 创建两个并行存在的 `<el-table>` 实例:一个负责前端显示分页后的部分记录;另一个则不应用任何分页逻辑,保持完整的原始数据集用于最终的Excel文档生成过程[^4]。前者服务于用户的视觉体验需求,后者则是后台处理的关键所在——它提供了待导出的所有条目信息而不受当前视图限制的影响。 编写JavaScript函数执行实际的导出动作。此过程中会先获取未分页版本单对应的HTML结构作为源材料,再利用之前加载过的库将其转换为目标格式的内容流,并触发浏览器下载行为。 ```javascript exportToExcel() { const wb = XLSX.utils.table_to_book(document.querySelector('#hidden-table').getElementsByTagName('table')[0], {sheet: "Sheet JS"}); /* 获取隐藏格 */ const wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'array'}); try { FileSaver.saveAs(new Blob([wbout],{type:"application/octet-stream"}), 'data.xlsx'); } catch (e) { if(typeof console !== 'undefined') console.log(e, wbout); } } ``` 上述代码片段展示了如何定义这样一个方法去捕获特定标识符下的完整格内容,并调用第三方工具类辅助构建工作簿对象及其内部的工作实例。之后便是序列化整个电子格至字节数组示法,最后借助FileSaver API促使客户端发起一次针对合成好的二进制资源的新请求从而启动自动保存流程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值