vxe-table导出excel插件,即exceljs导出多张图片的坑

news/2025/10/29 9:02:12/文章来源:https://www.cnblogs.com/dirgo/p/19173226

使用vxe-table的vxe-img-group组件在单元格可以很好的在web页面渲染多张图片,但是如果使用推荐的第三方导出excel插件plugin-export-xlsx(基于exceljs)的话,则只能导出第一张图片.

搜索全网,没找到类似需求的解决方法,问deepseek,倒是给出了通过配置偏移量实现的方案,但是实际测试才发现坑很大

const exportToExcel = async () => {data.search.rows = 999999await getDataList()const $table = tableRef.valueif ($table) {// 配置exportConfig的sheetMethod方法给 excel单元格添加 多张图片,实际上就是操作exceljs的接口exportConfig.sheetMethod = async (params) =>{console.log('配置exportConfig的sheetMethod方法');const dataList = data.dataListconst imageList = dataList[0].beforeRectificationImgsListconsole.log('图片===',imageList)const { worksheet, workbook } = params// // 1. 调整目标单元格的行高和列宽,为多张图片预留空间// const targetRow = 4; // 例如,第二行// const targetCol = 9; // 例如,B列// worksheet.getRow(targetRow).height = 150; // 设置行高// worksheet.getColumn(targetCol).width = 30; // 设置列宽//
            // // 2. 将图片添加到工作簿// const imageId1 = workbook.addImage({//     filename: 'http://127.0.0.1:19000/donghai7s/CheckPhotos/2025/10/00_093351948.png', // 替换为你的图片路径//     extension: 'png',// });// const imageId2 = workbook.addImage({//     filename: 'http://127.0.0.1:19000/donghai7s/CheckPhotos/2025/10/00_093352238.png', // 替换为你的图片路径//     extension: 'png',// });// // ... 可以添加更多图片//
            // // 3. 将图片定位到同一个单元格内的不同位置// // 获取单元格的起始位置(左上角)// // 注意:ExcelJS 的坐标是从 (1, 1) 开始的// const cellStartPos = {//     col: targetCol,//     row: targetRow// };//
            // // 定义图片在单元格内的偏移量和尺寸// worksheet.addImage(imageId1, {//     tl: { col: cellStartPos.col, row: cellStartPos.row }, // 定位到单元格左上角//     ext: { width: 50, height: 50 } // 设置图片显示尺寸// });//
            // worksheet.addImage(imageId2, {//     tl: {//         col: cellStartPos.col + 0.3, // 在单元格内水平偏移(可理解为向右移动)//         row: cellStartPos.row + 0.3  // 在单元格内垂直偏移(可理解为向下移动)//     },//     ext: { width: 50, height: 50 }// });// 假设将4张图片排列成 2x2 的网格const imagesPerRow = 7; // 每行图片数const imageWidth = 60;const imageHeight = 30;// 获取单元格的起始位置(左上角)// 注意:ExcelJS 的坐标是从 (1, 1) 开始的const cellStartPos = {col: 8,row: 3};// 计算单元格总大小,并据此设置行高列宽// worksheet.getColumn(9).width = imageWidth * imagesPerRow;// 遍历所有图片,计算每个图片在网格中的位置for (const image of imageList) {const index = imageList.indexOf(image);console.log(index, image)// const buffer = await fetch(image).then(res => res.arrayBuffer())// // 2. 将图片添加到工作簿// const imageId = workbook.addImage({//     buffer, // 替换为你的图片路径//
                // });const buffer1 = await fetch('http://127.0.0.1:19000/donghai7s/CheckPhotos/2025/10/00_093352238.png').then(res => res.arrayBuffer())const imageId = workbook.addImage({buffer: buffer1,extension: 'png'})const rowOffset = Math.floor(index / imagesPerRow*100)/100; // 计算行偏移console.log('=计算行偏移====',rowOffset)worksheet.addImage(imageId, {tl: {col: cellStartPos.col+ rowOffset, // 水平方向偏移row: cellStartPos.row   // 垂直方向偏移
                    },ext: {width: imageWidth,height: imageHeight}});}}console.log('====开始导出');await $table.exportData({type: 'xlsx',useStyle: true})console.log('====导出完成');//高级导出// $table.openExport()
    }data.search.rows = 10await getDataList()
}

如上图配置exportConfig的sheetMethod方法,这个坑实际上是微软excel的坑,它的列宽是基于字符宽度,也就是不是一个固定的值(并且因为留白之类的还要再多一点,比如默认是8个字符宽度,实际查看是8.23),而exceljs在计算偏移量的时候是把它当做像素计算的(也有说是exceljs自己的一套,见下面参考文章),导致导出后,即使你换算的非常精确,结果却是所有图片挤在单元格左侧的大概三分之一的空间,剩下的都是空白,所以,这种方法是不可行的,只少用exceljs不行,后端导出有可能行吧,不过嫌麻烦没试,根据deepseek的推荐,使用曲线实现的方法:设置成每个单元格一张图片,再设置合并单元格

参考文章:

ExcelJS 导出列宽行高失真?深度解析与实战修复 - ByteZoneX社区

将EXCEL单元格的宽度单位转换为像素单位。 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年专业的钻探软管由壬厂家最新权威推荐榜

2025年专业的钻探软管由壬厂家最新权威推荐榜行业概述钻探软管由壬作为石油勘探和钻采作业中的关键部件,在高压流体传输系统中扮演着不可或缺的角色。随着全球能源需求的持续增长和勘探技术的不断进步,对高质量钻探软…

2025年专业的员工福利平台比较好

2025年专业的员工福利平台比较好 在当今竞争激烈的商业环境中,企业越来越重视员工福利管理,以提升员工满意度、增强企业凝聚力并优化人力资源成本。专业的员工福利平台能够提供灵活、高效、数字化的解决方案,帮助企…

2025年可靠的除四害怎么联系

2025年可靠的除四害怎么联系:5家专业公司推荐与选择指南 随着城市化进程加快,有害生物防治需求日益增长。2025年,选择一家专业、高效的除四害服务公司至关重要。本文根据服务范围、技术实力、客户口碑等维度,精选…

2025年值得推荐的离婚财产分割律师排名

2025年值得推荐的离婚财产分割律师排名 在婚姻关系破裂时,财产分割往往是争议的焦点,尤其是涉及高净值资产、股权、跨国婚姻等复杂情况时,选择一位专业、可靠的离婚财产分割律师至关重要。优秀的律师不仅能帮助当事…

2025 年保暖防寒布,苗木防寒布,绿化保暖防寒布,树木防寒布厂家最新推荐,实力品牌深度解析采购无忧之选!

引言 为助力农户、农业合作社及园林单位精准筛选优质防寒布厂家,本次推荐榜单由农业防护用品协会联合行业专家团队共同测评制定。测评过程严格遵循 “三维九项” 标准,从技术实力(生产工艺、专利数量、定制能力)、…

2025 年园林防寒布,农用防寒布,保温防寒布厂家最新推荐,技术实力与市场口碑深度解析

引言 为助力农户、农业合作社及相关企业精准筛选优质防寒布厂家,本次推荐基于农业防护用品行业协会最新测评数据,采用 “技术实力 + 市场口碑 + 实际应用效果” 三维测评方法。测评团队对全国 50 余家防寒布厂家的生…

2025年专业的郑州注册公司代理哪家权威

2025年专业的郑州注册公司代理哪家权威在当今快速发展的商业环境中,郑州作为河南省的省会城市,吸引了大量创业者前来注册公司。然而,复杂的工商注册流程、税务申报要求以及各类行政审批手续往往让创业者感到头疼。选…

2025年知名的陕西白水苹果智慧果园

2025年知名的陕西白水苹果智慧果园:五大领军企业深度评测与选择指南陕西白水作为中国苹果产业的重要基地,近年来在智慧农业领域取得了显著进展。2025年,白水苹果智慧果园已成为全国农业现代化的典范,通过物联网、大…

2025 年裹树布防寒布,果树防寒布,绿化防寒布厂家最新推荐,技术实力与市场口碑深度解析

引言 随着农业与绿化产业对防寒防护需求的不断提升,裹树布、果树防寒布、绿化防寒布的产品品质与厂家服务能力愈发关键。为精准筛选优质厂家,本次推荐榜单由农业防护用品协会联合行业专家团队共同测评制定,测评过程…

互联网十年,从博客到知识库

人工智能可以让普通用户,不再只是信息的读者,可以成为各种知识的使用者,通过大模型能快速调取、组合、复用知识。不再是一篇篇地被动消费。好记性,不如写文档。【一】最近三年随着人工智能的崛起,伴随一个非常热点…

2025年诚信的专利评估企业

2025年诚信的专利评估企业权威推荐指南在知识经济时代,专利作为企业核心竞争力的重要组成部分,其价值评估的准确性与专业性直接关系到企业的创新成果转化与市场竞争力。随着2025年知识产权市场的日趋成熟,选择一家专…

2025年靠谱的防砸防刺穿劳保鞋批发销售

2025年靠谱的防砸防刺穿劳保鞋批发销售指南劳保鞋行业概述随着工业安全意识的不断提升,劳保鞋作为个人防护装备的重要组成部分,市场需求持续增长。2025年,防砸防刺穿劳保鞋已成为建筑、制造、采矿、石油化工等高风险…

就在本周五!全球首款 AI 主题桌游试玩会丨Convo AIRTE2025

10 月 31 日,北京,来 RTE2025 大会,试玩全球首款 AI 主题语言类桌游《Talk With》!睡不着?想恋爱?开车犯困?…… 都是聊天能解决的事儿!玩家在**《Talk With》里会面临抽到的随机场景**,每个场景都潜含着困难…

2025年靠谱的青年鸡生产厂家

2025年靠谱的青年鸡生产厂家权威推荐指南 在现代化养殖行业中,青年鸡的质量直接影响蛋鸡和肉鸡后期的生产性能。选择一家技术成熟、管理规范、信誉良好的青年鸡生产厂家至关重要。本文根据行业口碑、生产规模、技术实…

2025年快速宠物托运物流

2025年快速宠物托运物流:五大优质服务商深度评测与选择指南 随着宠物经济的蓬勃发展,宠物托运行业在2025年迎来了更专业化、精细化的服务升级。无论是跨国搬迁、异地工作还是旅行携带,安全高效的宠物运输需求持续增…

冲刺省队每日总结

冲刺省队每日总结神神又秘秘。神神又秘秘。 20251028 早上 早上的四道题是 P4587、P10144/P10210、P11536、P3527/SP10264。 T4 满脑子是前不久刚听说的二进制警报器。别想歪了,这个 \(k\) 复杂度也不是很对。 对每个…

2025年热门的盐城短视频剪辑哪家专业

2025年热门的盐城短视频剪辑哪家专业盐城短视频剪辑行业概述随着短视频平台的持续火爆,盐城地区的短视频剪辑需求在2025年呈现爆发式增长。无论是企业品牌宣传、电商带货还是个人IP打造,专业优质的短视频剪辑服务都成…

2025年专业的短视频运营辅导

2025年专业的短视频运营辅导机构Top5推荐指南 在数字化营销高速发展的2025年,短视频已成为企业品牌推广的核心阵地。选择一家专业的短视频运营辅导机构,能帮助企业快速抢占流量红利,实现精准获客与品牌曝光。本文基…

2025年口碑好的高端展厅设计展示空间创新设计榜

2025年口碑好的高端展厅设计展示空间创新设计榜 在数字化与体验经济蓬勃发展的2025年,高端展厅设计已成为企业品牌传播与价值传递的重要载体。优秀的展厅设计不仅能提升品牌形象,还能通过沉浸式体验增强客户互动,为…

2025年优秀的涂装喷砂房推荐TOP生产厂家

2025年优秀的涂装喷砂房推荐TOP生产厂家 在工业制造领域,涂装喷砂房是表面处理工艺中不可或缺的关键设备,广泛应用于汽车、船舶、航空航天、工程机械等行业。优质的喷砂房不仅能提高工件表面处理质量,还能提升生产…