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

网站ui设计基础直播营销策划方案

网站ui设计基础,直播营销策划方案,上海做淘宝网站建设,婚礼婚庆网站建设需求分析文章目录 前言一、导出效果二、直接上代码三、感谢 前言 开发过程中,后端反馈无法实现导出的Excel表格文件宽度根据数据进行宽度自适应,故实现此方案。 前端根据返回数据结合表格字头实现导出下载Excel文件,Excel文件每列的宽度根据数据长度…

文章目录

  • 前言
  • 一、导出效果
  • 二、直接上代码
  • 三、感谢


前言

开发过程中,后端反馈无法实现导出的Excel表格文件宽度根据数据进行宽度自适应,故实现此方案。

  1. 前端根据返回数据结合表格字头实现导出下载Excel文件,Excel文件每列的宽度根据数据长度进行自适应。
  2. 还可以增加最后一行的 “合计” 数据。
  3. 还可以自定义Excel表格的文件名称。

一、导出效果

Excel 导出效果

二、直接上代码

方法如下:


/*** 表格导出(自适应导出列)* params*    title: 标题*    tableData 表格数据*    columns 表头展示列  如:[{ label: '单位名称', prop: 'ZGDWMC' }]*    removeProps 导出表格去除列 如 ['ZGDWMC', 'JDJC'] 会过滤掉 ZGDWMC 和 JDJC* sumObj*  bottomSum 是否需要底部合计*/
export const adaptiveTableExport = (params = {}, sumObj = { bottomSum: false }) => {if(!params.tableData) return console.log('没有表格数据!');if(!params.columns) return console.log('没有自定义表头展示列!');const excel = XLSX.utils.book_new();let demo = [];let columns = deepClone(params.columns);let tableData = deepClone(params.tableData);// 删除去除列if(params.removeProps){columns = params.columns.filter(item => {if(!params.removeProps.includes(item.prop)){return item;}})}// 判断是否需要合计添加合计列if(sumObj.bottomSum && tableData.length > 0){let sums = {};columns.forEach((column, index) => {if (index === 0) {sums[columns[index].prop] = '合计';return;}const values = tableData.map(item => Number(item[column.prop]));if (!values.every(value => isNaN(value))) {sums[columns[index].prop] = values.reduce((prev, curr) => {const value = Number(curr);if (!isNaN(value)) {return prev + curr;} else {return prev;}}, 0);sums[columns[index].prop] += '';} else {sums[columns[index].prop] = '0';}});tableData.push(sums);}// 开始计算if(tableData.length > 0){for (let i = 0; i < tableData.length; i++) {const object = tableData[i];let obj = {}for (const key in object) {if (Object.hasOwnProperty.call(object, key)) {for (let index = 0; index < columns.length; index++) {const element = columns[index];obj[element.label] = String(object[element.prop]) || '  '}}}demo.push(obj);}} else {let obj = {};for (let index = 0; index < columns.length; index++) {const element = columns[index];obj[element.label] = element[element.label] || ' ';}demo.push(obj);}let data = XLSX.utils.json_to_sheet(demo, {});data["A1"].s = {font: {bold: true,},alignment: {horizontal: "center",vertical: "center",},};// 1.所有表头的宽度const headsWidth = Object.keys(demo[0]).map((value) => {if (/.*[\u4e00-\u9fa5]+.*$/.test(value)) {return parseFloat(value.toString().length * 2.1);} else {return parseFloat(value.toString().length * 1.1)}});// 2.所有表体值的宽度const rowsWidth = demo.map((item) => {// 每行数据中值的宽度const maxValue = Object.values(item).map((value, index) => {let valueWidth;if (/.*[\u4e00-\u9fa5]+.*$/.test(value)) {valueWidth = parseFloat(value.toString().length * 2.1);} else {if (value) {valueWidth = parseFloat(value.toString().length * 1.1);}}// 对比出表头和表体值的最大数return Math.max(valueWidth, headsWidth[index]);});return maxValue;})// 3.对比每列最大值let aotuWidth = []rowsWidth.map((row, index) => {let maxWidth = [];row.map((value, i) => {if (index === 0) {maxWidth.push({wch: value});} else {maxWidth.push({wch: Math.max(value, aotuWidth[i].wch)})}})aotuWidth = maxWidth;});// 4.给excel设置自适应宽度data["!cols"] = aotuWidth;XLSX.utils.book_append_sheet(excel, data);XLSX.writeFile(excel, `${ params.title || '自适应表格导出' }.xlsx`);
}

三、感谢

如果觉得有用欢迎点赞关注收藏。
有问题私信我!!~~
谢谢

http://www.dtcms.com/a/439813.html

相关文章:

  • 用网站做自我介绍创建购物平台需要什么
  • 建站平台绑定域名wordpress 图片 主题 52
  • 最专业的手机网站建设wordpress设置密码访问带提示
  • 大连企业建站系统简约大气展厅效果图
  • ZRender 核心接口解析4:PainterBase——渲染器的统一抽象规范
  • 哪几个小说网站做网编拿的钱多个人主页设计代码
  • 网站建设方案书 本案公众号推广渠道
  • 宜昌平台网站建设淘客联盟如何做网站推广
  • JAVA之生成验证码
  • 如何制作属于自己的抢票软件?
  • 云服务器可以放几个网站淮安市建设局网站
  • 在互联网公司上班都做啥的宁波优化推广选哪家
  • QML学习笔记(二十四)QML的Keys附加属性
  • 建网站怎么挣钱的全世界做会展介绍的网站排名
  • wordpress 生成缩略图搜索引擎优化是做什么的
  • 如何做网站卖产品学校网站怎么做的
  • 网站服务器查询哈尔滨专业网站制作公司
  • 建设网站答辩情况博罗网页定制
  • Bi-LoRA的数学推导
  • 建设银行官方网站入口做爰全过程免费的视频99网站
  • [Java]PTA:jmu-Java-03面向对象基础-05-覆盖
  • 扁平化设计风格网站南昌所有建设工程网站
  • app推广赚佣金wordpress速度优化存
  • 做网站买一个域名多少钱ui设计培训费一般多少
  • 北京网站设计公司jx成都柚米科技15温州网站建设方案开发
  • 网站支付页面源代码广告设计与制作专业能考二建吗
  • 对字典按值进行“排序”:sorted()、items()及lambda函数联合使用
  • 搜狗网站入口域名网站建设方案
  • 拼多多网站怎么做淄博圻谷网站建设制作
  • 天水网站建设公司网页设计作品集展示