JS 二维码/图片 前端表格导出 office版

需求
1.导出的表格 需要office打开,并且无报错无警告
2.表格内有二维码,需要导出来


导出插件:因为需要office 选用的是sheetjs,无法使用bootstrap-table-export.,但是他的pro才提供图片导出功能,gitub找了一个 https://github.com/bibitoo/js-xlsx 可以导出图片和设置样式
二维码插件:比较多,随意一个都可以  如果处理出来的是canvas ,就转换成base64的图片,我用的是qrcodejs直接处理出来是 base64的图片二维码

结果导出来是这样的,这样效果会影响:二维码超出表格,会影响扫描,于是出来以下解决办法


 

 

 

给二维码加一个边框,看样子功能没有影响,台式有点丑,表格被覆盖,二维码也互相遮挡。只看去看js-xlsx的代码

 

然后去xlsx.js  中发现write_drawing是处理图片, 修改找到图片的对应代码,对应officeXML,发现应该是这个99999导致的超出边框,吧99999改成0,上面的xdr:form里面的rowOff和coloff改成10000 完美的效果

 

 最终完美的效果

 

这次更新 新增了一个图片的导出。原理一样 吧图片转成base64就可以了,也可以写一个全局img,onload方式来直接转
需要注意如果是跨域图片地址 需要设置 crossorigin="anonymous",否则canvas.toDataURL回报错

 

 

 预览地址 
http://106.14.246.251:8807/

今天又发现了一个新的插件 对于表格处理能完善,自带支持样式和图片
缺点就是只支持xlsx ------- exceljs
这个原本是node服务端导出用的,但是也支持页面使用,我是通过writeBuffer后再转成blob类型,在用FileSaver导出来 就完事



posted @ 2021-02-20 13:02  V黑匣子  阅读(495)  评论(2)    收藏  举报