找回密码
 立即注册

QQ登录

只需一步,快速开始

Ellia.Duan SpreadJS 开发认证
超级版主   /  发表于:2024-10-29 12:06  /   查看:178  /  回复:0
本帖最后由 Ellia.Duan 于 2024-10-29 12:20 编辑

在一些报表场景中,需要添加图片,ReportSheet目前支持图片的展示:
https://demo.grapecity.com.cn/spreadjs/help/docs/features/reportsheet/template-sheet-setting/add-picture
具体可以看这篇文章,但是在一些场景中,后端返回的数据源包括一些图片链接,图片需要进行扩展时,我们应该如何设置呢?

SpreadJS支持Image函数。下面的方案主要是使用Image函数来解决。
一、设置数据源
比如说,当前有这样子的数据源:
image.png571014098.png
将其添加到dataManager中

  1. let data = [
  2.             {
  3.                 id: 1,
  4.                 name: "张三",
  5.                 age: 27,
  6.                 sex: 0,
  7.                 img: "https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/images/splogo.png"
  8.             },
  9.             {
  10.                 id: 2,
  11.                 name: "李四",
  12.                 age: 31,
  13.                 sex: 1,
  14.                 img: "https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/images/splogo.png"
  15.             },
  16.             {
  17.                 id: 3,
  18.                 name: "小王",
  19.                 age: 22,
  20.                 sex: 1,
  21.                 img: "https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/images/splogo.png"
  22.             },
  23.             {
  24.                 id: 4,
  25.                 name: "小韩",
  26.                 age: 45,
  27.                 sex: 0,
  28.                 img: "https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/images/splogo.png"
  29.             },
  30.             {
  31.                 id: 5,
  32.                 name: "小明",
  33.                 age: 25,
  34.                 sex: 0,
  35.                 img: "https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/images/splogo.png"
  36.             },
  37.         ];
  38.         const ordersTable = spread.dataManager().addTable('person', {data});
复制代码

二、设置模板

  1. const reportSheet = spread.addSheetTab(0, '报表1', GC.Spread.Sheets.SheetType.reportSheet);
  2. const templateSheet = reportSheet.getTemplate();
  3. templateSheet.getRange(0, 0, 2, 10).backColor('pink')
  4. ordersTable.fetch().then(() => {
  5.             const columns = ['id', 'name', 'age', 'sex'];
  6.             columns.forEach((columnName, i) => {
  7.                 templateSheet.setValue(0, i, columnName);
  8.                 templateSheet.setTemplateCell(1, i, {
  9.                     type: 'List',
  10.                     binding: `person[${columnName}]`,
  11.                 });
  12.             });
  13.             templateSheet.setTemplateCell(1, 4, {
  14.                 type: 'List',
  15.                 binding: `person[img]`,
  16.             });
  17.             templateSheet.setValue(0, 5, "图片")
  18.             templateSheet.setFormula(1, 5, "=image(E2)")
  19.             templateSheet.setColumnVisible(4, false)

  20.             reportSheet.refresh();


  21.         });
复制代码
在上述代码中,为E2单元格绑定了img字段,但是将E列隐藏,为F2设置公式"=image(E2)"
三、结果


image.png807546996.png



DEMO: 图片.html (8.13 KB, 下载次数: 6)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部