前端(vue)exceljs导出Excel(导出图片)
少说废话,直接入题
先引入exceljs
npm install exceljs --save
随后在导出Excel的方法里面这样写
async exportExcel () {
// 定义表头
const columns = [
{
header: '标题名',
key: 'data数据字段名',
width: 14
},
{
header: '姓名',
key: 'name',
width: 14
},
{
header: '头像',
key: 'img',
width: 14
}
]
// 将要导出的数据
const exportDataList = [
{
name: '张三',
img: '图片url'
}
]
const Exceljs = require('exceljs')
// 创建工作簿
const workbook = new Exceljs.Workbook()
// 创建工作表
const workSheet = workbook.addWorksheet('sheet1')
// 工作表添加表头
workSheet.columns = columns
// imgFieldList:图片字段名
const imgFieldList = ['img', 'img2',....]
// 往Excel插入图片
for (let ri = 0; ri row[e])
// 遍历图片字段
for (let ai = 0; ai {
// 转换成Blob格式
const blob = new Blob([buffer], { type: 'application/octet-stream' })
// 导出excel,这里获得了blob,有很多种导出方法,可以用FileSaver.js(百度一下就有了),我这里就简单点了,用HTML的A标签导出
// 获取下载链接
const url = URL.createObjectURL(blob)
// 页面上有一个a标签,A标签设置一下id或者ref,反正这里获取它的dom结构,用于下载Excel使用
this.$refs.downloadExcel.href = url
// 设置excel名称
this.$refs.downloadExcel.download = '测试导出.xlsx'
// 模拟点击一次a标签,执行下载
this.$refs.downloadExcel.click()
})
}
imageToBase64方法
imageToBase64 (url, width, height) {
return new Promise((resolve, reject) => {
const image = new Image()
image.src = url
image.crossOrigin = '*'
image.onload = () => {
const canvas = document.createElement('canvas')
canvas.width = width || image.width
canvas.height = height || image.height
const ctx = canvas.getContext('2d')
ctx.drawImage(image, 0, 0, width || image.width, height || image.height)
const base64 = canvas.toDataURL('image/png')
resolve(base64)
}
})
}
注意,如果图片跨域,且项目没有处理跨域,imageToBase64方法会报错,至于如何处理跨域问题,我这个菜鸡就不懂了。。。
如有需要看导出word文档(带图片导出)的可以看我另一篇文章。
前端(vue)html-docx导出word(导出图片)
https://blog.csdn.net/new_public/article/details/135695852
码字不易,于你有利,勿忘点赞
天生我材必有用,千金散尽还复来
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
