首页 > 其他分享 >使用exceljs和file-saver导出带图片的excel表格

使用exceljs和file-saver导出带图片的excel表格

时间:2023-06-28 21:33:56浏览次数:36  
标签:canvas const img exceljs saver excel width workbook new

参考

https://www.swvq.com/article/detail/487
https://github.com/exceljs/exceljs/blob/master/README_zh.md#图片

import ExcelJS from 'exceljs'
import fileSaver from 'file-saver'

let workbook = null
let worksheet = null

// 图片转base64
const convertImgToBase64 = (url) => {
  return new Promise((resove, reject) => {
    const canvas = document.createElement('canvas') as HTMLCanvasElement
    const ctx = canvas.getContext('2d')
    const img = new Image()
    img.crossOrigin = 'Anonymous'
    img.onload = function () {
      canvas.height = img.height
      canvas.width = img.width
      ctx.drawImage(img, 0, 0, img.width, img.height)
      var dataURL = canvas.toDataURL('image/png')
      resove(dataURL)
    }
    img.src = url
  })
}
// 导出
const handleExport = async () => {
  workbook = new ExcelJS.Workbook()
  workbook.created = new Date()
  workbook.modified = new Date()
  worksheet = workbook.addWorksheet('sheet-demo')

  worksheet.columns = [
    { header: 'skuid', key: 'id', width: 10 },
    { header: '姓名', key: 'name', width: 32 },
    { header: '图片', key: 'DOB', width: 10, outlineLevel: 1 },
  ]
  const row = worksheet.getRow(2)

  row.values = [2356545456, 'wb927448', 'https://www.baidu.com']

  const data = await convertImgToBase64('https://avatars.githubusercontent.com/u/40457081?s=48&v=4')
  console.log(data)
  const imageId = workbook.addImage({
    base64: data,
    extension: 'png',
  })
  console.log(imageId)
  worksheet.addImage(imageId, {
    tl: {
      col: 3,
      row: 5,
    },
    ext: {
      width: 40,
      height: 40,
    },
	// 超链接
    hyperlinks: {
      hyperlink: 'https://www.baidu.com',
      tooltip: 'https://www.baidu.com',
    },
  })

  const buffer = await workbook.xlsx.writeBuffer()
  fileSaver(
    new Blob([buffer], {
      type: 'application/octet-stream',
    }),
    'demo.xlsx'
  )
}

效果

标签:canvas,const,img,exceljs,saver,excel,width,workbook,new
From: https://www.cnblogs.com/laine001/p/17512613.html

相关文章

  • 数据库 - 不同数据库将表、字段、描述保存到Excel
    不同数据库将表、字段、描述保存到Excel查询语句SqlServerSELECT表名=CASEWHENA.COLORDER=1THEND.NAMEELSE''END,表备注=CASEWHENA.COLORDER=1THENISNULL(F.VALUE,'')ELSE''END,列序号=A.COLORDER,列名称=A.NAME,标识=CASEWHENCOLUMNPROPERT......
  • Excel JavaScript object model in Office Add-ins
    ExcelJavaScriptobjectmodelinOfficeAdd-ins-OfficeAdd-ins|MicrosoftLearnOffice.jsAPIforExcelExcel加载项使用 OfficeJavaScriptAPI 与Excel中的对象进行交互,其中包括两个JavaScript对象模型:ExcelJavaScriptAPI:随Office2016一起引入的Exc......
  • ExcelJS 导入导出excel带下拉框筛选数据
    importExcelJSfrom"exceljs"; asyncfunctionexportExcelTemplate(deptList:any){ constworkbook=newExcelJS.Workbook(); constworksheet=workbook.addWorksheet("模板"); worksheet.columns=[  {   header:"编号"......
  • TreeSaver 图片的定位
    Treesaver是浏览器大小尺寸敏感(size-sensitive)的,会就着当前的浏览器尺寸(browsersize),选用不同的分栏表格(grid)做排版。不同排版效果下,图片出现的位置有啥规律,这就是本文要分析的内容: 一些典型的图片出现的规律:首先我们看一些图片出现的规律:一、当显示的区域只有两栏时,显示另外一个......
  • TreeSaver 使用教程整理——Step 4: Using a Title Figure
    请首先阅读前几篇教程,才能对本篇文章了解比较深入:TreeSaver使用教程整理——Step1:GettingStartedTreeSaver使用教程整理——Step2:AddingBasicUITreeSaver使用教程整理——Step3:CreatingGrids我们在第二步的基础上,copy到step4作为我们step4初始的基础。 Step4......
  • TreeSaver 使用教程整理——Step 3: Creating Grids
    请首先阅读前几篇教程,才能对本篇文章了解比较深入:TreeSaver使用教程整理——Step1:GettingStartedTreeSaver使用教程整理——Step2:AddingBasicUI我们在第二步的基础上,copy到step3作为我们step3初始的基础。 Step3:CreatingGrids模板文件resources.html的变化在......
  • TreeSaver 使用教程整理——Step 2: Adding Basic UI
    请首先阅读前一篇教程:TreeSaver使用教程整理——Step1:GettingStartedStep2:AddingBasicUI我们上一步实现的网页有了一个最最简单的功能,这一步我们将在上一步基础上添加切换分页的按钮以及显示当前页面信息。请Copy上一步的内容,并对下面文件做如下修改: 对资源文件(resource......
  • TreeSaver 使用教程整理——Step 1: Getting Started
    TreeSaver介绍Treesaver是一个开源的JavaScript框架,用来创建杂志风格的网页布局。 为何要整理这个系列的文章下面的教程整理自:https://github.com/Treesaver/treesaver/wiki/Walkthrough,也许是这个框架目前才刚刚起步,它的文档很成问题,文档中一些链接不能下载,源代码中欠缺一......
  • 单列行数太大使用excel进行分列显示
    公式:=OFFSET($A$1,COLUMN(A1)-1+(ROW(A1)-1)*2,)说明:最后的*2是指定分列的个数 ,这里指定分2列  ......
  • Excel JavaScript API for PivotTables
    WorkwithPivotTablesusingtheExcelJavaScriptAPI-OfficeAdd-ins|MicrosoftLearnPivotTablesstreamlinelargerdatasets.Theyallowthequickmanipulationofgroupeddata.TheExcelJavaScriptAPIletsyouradd-increatePivotTablesandinteractw......