当前位置: 首页 > wzjs >正文

虎门做网站北京网络推广外包公司排行

虎门做网站,北京网络推广外包公司排行,建行贵金属,药品网站网络营销推广怎么做Vue2中 前端界面导出表格,使用XLSXS插件版本(^0.8.13)导出表格存在表格背景颜色无法正常展示,百分比数据没有正常展示 【有条件的尽量先升级高版本插件,此插件版本对样式支持度不够】 优先考虑插件版本升级 同样的使用方法在vue3中没有出现错…

        Vue2中 前端界面导出表格,使用XLSXS插件版本(^0.8.13)导出表格存在表格背景颜色无法正常展示,百分比数据没有正常展示 【有条件的尽量先升级高版本插件,此插件版本对样式支持度不够

        优先考虑插件版本升级 同样的使用方法在vue3中没有出现错误

    以下为界面上表格,表格采用vxe-table组件  整个表格的列均为动态计算得出

导出后的表格样式丢失 且最后一行数据百分比不能正常展示

以下为封装的批量倒出代码 使用需根据项目自行更改

import FileSaver from 'file-saver'
import XLSXS from 'xlsx-style'export function exportMultiSheetExcel(tables, // [{ el: tableDom, name: 'Sheet1' }, ...]{fileName = '多Sheet表格',style,colWidth,callback,  // 回调 对数据进行处理addCell,DataManipulationMethod}
) {const wb = XLSX.utils.book_new();tables.forEach(({ el, name, index }) => {const sheet = XLSX.utils.table_to_sheet(el);if (colWidth) sheet['!cols'] = colWidth;DataManipulationMethod && DataManipulationMethod(sheet, index);Object.keys(sheet).forEach((key) => {if (key.startsWith('!')) return;const cell = sheet[key];if (!cell || cell.v === '' || cell.v == null) return;cell.s = style || {};callback && callback(key, cell, sheet);});addCell && addCell(sheet);XLSX.utils.book_append_sheet(wb, sheet, name || 'Sheet');});const wbout = XLSXS.write(wb, {bookType: 'xlsx',type: 'binary',cellStyles: true})// 创建 Blob 并下载const blob = new Blob([s2ab(wbout)], {type: 'application/octet-stream'});const url = window.URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = `${name || '表格'}.xlsx`;a.click();window.URL.revokeObjectURL(url);
}// 表格使用 ----------
import { exportMultiSheetExcel } from '@/utils'exportTable(){this.tableScheme.forEach((tableEle, index) => {// let ws = this.tableColumnHandle(tableEle.columns, this.$refs['scheme' + index][0])tables.push({el: this.$refs['scheme' + index][0].$el,// name: tableEle?.columns[0]?.title.replace(/\d{4}年/g, '').replace(/\d{2}月/g, '').replace(/:/g, '-').replace(/方案/g, ''),name: '123' + index,  // sheet的名称 注意名称不能超过31个字符且不能包含:等字符index})})exportMultiSheetExcel(// 导出用隐藏的导出格式表格tables,{fileName: '方案',style: {alignment: {horizontal: 'center', // 水平居中对齐vertical: 'center',wrapText: true}},callback: (key, item, obj) => {if (key === 'B5') {console.log(key)item.s = {alignment: {horizontal: 'center', // 水平居中对齐vertical: 'center',wrapText: true},fill: {fgColor: { rgb: 'FFb0e1' }}}}},DataManipulationMethod: (data, index) => {console.log(data, 'dd')const fixedCode = ['A', 'B']const tableDataLength = this.tableScheme[index].data.length // 表格数据行数const headNum = 3 // 表头占用行数const endNum = 2 // 表尾占用行数const keysArr = []// 非A 或者 B 开始的数据 需要删除 表尾后的多余固定列脏数据 即  tableDataLength+headNum+endNum 之后的let maxNum = 0for (const key in data) {if (!key.includes('!')) {const num = key.replace(/[A-Za-z]/g, '') - 0if (num > maxNum) maxNum = numconst code = key.replace(/[0-9]/g, '')if (!keysArr.includes(code)) keysArr.push(code)if (fixedCode.includes(code) && headNum + 1 <= num && num <= tableDataLength + headNum) {if (data[key].v === '') {// 固定列替换成有数据的data[key] = data[key.replace(/[0-9]/g, '') + (num + tableDataLength + headNum + endNum)]}}}}// 删除固定列脏数据keysArr.forEach(code => {for (let num = (tableDataLength + headNum + endNum + 1); num <= maxNum; num++) {delete data[`${code + num}`]}})}})
}

插件使用过程中踩坑:

1,导出sheet名称不符规范

       导出多个表格到同一个excel表格中的代码参考如下

this.tableScheme.forEach((tableEle, index) => { let ws = this.tableColumnHandle(tableEle.columns, this.$refs['scheme' + index][0])  /// 表格部分数据处理wsArr.push({title: tableEle?.columns[0]?.title, ws: ws})})const wb = XLSX.utils.book_new();wsArr.forEach( item => { // excel表格 sheet名称不能包含 :号 31个字符内const sheetName = item.title.replace(/\d{4}年/g, '').replace(/\d{2}月/g, '').replace(/:/g, '-').replace(/方案/g, '')XLSX.utils.book_append_sheet(wb, item.ws, sheetName);  // 此处添加到对应的sheet中})XLSX.writeFile(wb, '调时方案执行情况.xlsx');

excel中的sheet名称要求如下:

style: {alignment: {horizontal: 'center', // 水平居中对齐vertical: 'center',wrapText: true},fill: {fgColor: { rgb: 'FFD6D6' } // 例如红色背景}
},

2,表格背景色不展示

如果设置全局的颜色 可以显示  但是对单个背景色进行设置就不显示了

全局直接在style中添加即可

style: {alignment: {horizontal: 'center', // 水平居中对齐vertical: 'center',wrapText: true},fill: {fgColor: { rgb: 'FFD6D6' } // 例如红色背景}
},

对单个背景色进行处理 在回调callback中进行条件判断  注意 必须整个item.s 一起写 包括剧中 否则就不生效

callback: (key, item, obj) => {            if (key === 'B5') {item.s = {alignment: {horizontal: 'center', // 水平居中对齐vertical: 'center',wrapText: true},fill: {fgColor: { rgb: 'FFb0e1' }}}}
},

3,百分比格式设置之后不生效

正常情况只需要在回调callback中 或者 DataManipulationMethod 处理方法中对数据进行格式命名numFmt  即可

data[key].s = {alignment: { horizontal: 'center', vertical: 'center', wrapText: true },numFmt: '0.00%'  // 只设置格式
}

不生效在用以下方法 直接改为string格式

const percent = data[key].v * 100;data[key].v = Number.isInteger(percent)? `${percent}%`: `${percent.toFixed(2)}%`;data[key].t = 's'; // 明确设为字符串,防止 Excel 报错
http://www.dtcms.com/wzjs/388358.html

相关文章:

  • 重庆市城乡建设与发展委员会网站google搜索引擎
  • 网站建设天津百度一下你就知道移动首页
  • 网站建设的实训周个人免费自助建站网站
  • 上海金融网站建设武汉seo诊断
  • 城市建设协会网站网络销售面试问题有哪些
  • 大连日语网站开发优化关键词有哪些方法
  • 广州市物联网应用示范项目seo点击软件
  • 500云空间网站互联网推广怎么做
  • 静态网站公用头部 调用标题ai智能营销系统
  • 西藏网站建设公司江阴企业网站制作
  • 彩票走势图网站是用什么程序做的附近哪里有计算机培训班
  • 列车营销网站怎么做淘宝推广费用多少钱一天
  • 建站怎么建2021年10月新闻摘抄
  • 建站兔软件常见问题点点站长工具
  • 建一个电商网站多少钱seo优化方法
  • 所有浏览器大全seo好seo
  • 做网站如何连数据库品牌营销推广策划公司
  • 做网站 长360站长
  • 贡井区建设局网站?营销模式都有哪些
  • 返利网站 帐如何做渠道推广费用咨询
  • 深一网站建设招聘北京网站优化价格
  • wordpress orderby 参数seo人员是什么意思
  • phpnow超详细WordPress搜索引擎优化seo方案
  • 如何用ps做网站首页的图片百度云手机登录入口
  • 企业网站建设的可行性分析公司网络优化方案
  • 个人建站模板自创网站
  • 洛阳建设厅网站开封网站推广公司
  • 罗湖专业做网站公司抖音关键词挖掘工具
  • 公司网站建设和推广百度seo排名优化如何
  • 做英文小说网站全网推广平台有哪些