使用vue导出表格数据至Excel表格中,自定义导出的excel表格数据
先安装script-loader,xlsx,file-saver;然后将主要的js导出文件加入
npm i script-loader -S
npm i xlsx -S
npm i file-saver -S
excel所需的js文件
我找到一些文章,但是上面有好多是直接导出当前已渲染的表格中的数据,并不能够自定义导出所有数据
exportExcel() {
require.ensure([], () => {
const { export_json_to_excel } = require('@/excel/Export2Excel');
/* 设置Excel的表格第一行的标题 */
const tHeader = ['ID','店铺名称','公司'];
/* filterValue里的值是tableData里对象的属性 */
const filterValue = ['id','shopname','companyname'];
const list = this.exportList;
/* 对要导出的数据进行加工,自定义,filterValue中的字段名就是导出到excel中对应的数据键值 */
for(let i = 0; i < list.length; i++) {
/* 如要导出名字,则自定义name属性 */
list[i].name = list[i].lastname + '对的';
}
/* 把data里的list存到list */
const data = this.formatJson(filterValue, list);
/* 最后一个项为导出的excel名字,可以随便定义 */
export_json_to_excel(tHeader, data, '列表');
});
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
},
单独的设置一个字段来实现导出,这样才不会对原本渲染在页面上的数据造成污染
对于需要进行处理后再进行导出的数据,最好应该重新定义一个字段,这样就不会改变原有的数据,可以直接导出的数据,就直接将字段放入filterValue数组里就可以了
nodejs中生成excel的库很多,在尝试后,个人认为对于简单的需求(按行添加),使用node-xlsx就足够了。因为属于第三方模块,所以肯定要npm一下,然后引入。在代码中引入模块;
这次记录的是昨晚一个想法:把excel内容复制到剪切板并转成自己想要的json格式,核心是要把excel内容转json,这部分主要看excel的格式和json如何业务的映射,不展开。倒是通过实践,收获了剪切板的一些知识点。
由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!