最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

js

旗下网站admin54浏览0评论

js

js

VUE 使用 js-xlsx 前端导出Excel的函数公式

官网地址:https://github/SheetJS/sheetjs

worksheet['单元格'] = { t:'n', f: "函数公式" };

例如:设置单元格R2的值为’P2*Q2

//t: 'n':格式为数字。注意P2和Q2的格式也应为'n',否则导出的公式不好用wb.Sheets['Sheet1']['R2'] = { t: 'n', f: 'P2*Q2'};

下面是一个完整的例子:(例子中用的前端框架是element ui) 1.安装命令(以官网为主)

npm install xlsx

我用的下面这个也好用了 2.vue文件中引入

import XLSX from 'xlsx';

3.使用

<template><el-button type="primary" size="small" @click="handleDownload" >Excel出力 </el-button></template><script>import XLSX from 'xlsx';export default {data() { return { wopts: { //出力文件类型 bookType: 'xlsx', // Generate Shared String Table bookSST: false, // Output data encoding type: 'binary', }, }; }, // 字符串转ArrayBuffer s2ab(s) { if (typeof ArrayBuffer !== 'undefined') { var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); for (let i = 0; i !== s.length; ++i) { view[i] = s.charCodeAt(i) & 0xFF; } return buf; } else { const buf = new Array(s.length); for (let i = 0; i !== s.length; ++i) { buf[i] = s.charCodeAt(i) & 0xFF; } return buf; } }, // 自定义简单的下载文件实现方式 saveAs(obj, fileName) { var tmpa = document.createElement('a'); tmpa.download = fileName || '下载'; // 绑定a标签 tmpa.href = URL.createObjectURL(obj); // 模拟点击实现下载 tmpa.click(); // 延时释放 setTimeout(function() { // 用URL.revokeObjectURL()来释放这个object URL URL.revokeObjectURL(obj); }, 100); }, //点击Excel出力按钮 handleDownload() { //想导出的数据 const data = [ { 商品名称: 'aaa', 单价: 5, 件数: 5, 总价: '', }, { 商品名称: 'bbb', 单价: 3, 件数: 5, 总价: '', }, ]; const wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {}}; // 将JS对象数组转换为工作表 data = XLSX.utils.json_to_sheet(data); wb.Sheets['Sheet1'] = data; //循环根据自己的需求写,注:不能再用data,data已经被转换了,可以输出看一下 for (let i = 2; i < 4; i++){ //总价=单价*件数 wb.Sheets['Sheet1']['D' + i] = { t: 'n', f: 'B' + i + '*C' + i }; } this.saveAs(new Blob([this.s2ab(XLSX.write(wb, this.wopts))], { type: 'application/octet-stream', }), 'Excel的名字.' + this.wopts.bookType); }}</script>

4.excel导出后打开(处于保护状态),不显示总价,需要点击编辑有效才可以看见(Excel设置了“浏览器下载的文件只读”的情况下) 如果Excel没有上面的设置,仍希望导出的Excel为只读模式则:

data['!protect'] = false;

20210309补充 5.希望显示单位 例 Sheet1的单元格D2 显示 25元 方法1:设置后靠右

wb.Sheets['Sheet1']['D2' ] = { t: 'n', f: 'B2*C2' ,z: '0"元"'};

方法2:设置后靠左

wb.Sheets['Sheet1']['D2' ] = { t: 'n', f: 'B2*C2&"元"'};

6.希望显示一位小数,显示单位,显示千分符

wb.Sheets['Sheet1']['D2' ] = { t: 'n', f: 'B2*C2' ,z: '#,##0.0"元"'};

js-xlsx 实现Excel导出函数公式

发布评论

评论列表(0)

  1. 暂无评论