本帖最后由 Richard.Huang 于 2023-8-9 18:03 编辑
再提供两种解决方案
1. 通过对单元格设定格式来实现图片的绑定
设置模板
设置自定义单元格格式=image(@)
绑定数据展示结果
var dataAddress = {
grapecityPic:'https://www.grapecity.com.cn/en/favicon/favicon-32x32.png',
baiduPic:'https://www.baidu.com/favicon.ico',
biligamePic:'https://s1.hdslb.com/bfs/seed/game-web/duang/header/images/biligame-logo-w200.e54786d.svg'
}
let source = new GC.Spread.Sheets.Bindings.CellBindingSource(dataAddress);
sheet.setDataSource(source);
2. 通过自定义单元格格式在paint过程中添加浮动图片
ImageCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
GC.Spread.Sheets.CellTypes.Base.prototype.paint.call(this, ctx, value, x, y, w, h, style, options)
let { sheet, row, col } = options
if (sheet.getTag(row, col) !== 'painted' && value) {// 控制重绘方法的范围,如果单元格被设置成了“painted”或者图片链接没有给则不会执行该方法
if (!(sheet.shapes.get(this.picType))) {
// 添加浮动图片
let pic = sheet.shapes.addPictureShape(this.picType, value, 0, 0, 100, 100)
// 如果判断单元格是否是合并的单元格
let span = sheet.getSpan(row, col)
let rowCount = 1
let colCount = 1
if (span) {
rowCount = span.rowCount
colCount = span.colCount
}
// 浮动图片起始行
pic.startRow(row)
// 浮动图片结束行
pic.endRow(row + rowCount)
// 浮动图片起始列
pic.startColumn(col)
// 浮动图片结束列
pic.endColumn(col + colCount)
// 禁止图片移动
pic.allowMove(false)
} else {
let pic = sheet.shapes.get(this.picType)
pic.src(value)
}
sheet.setTag(row, col, 'painted')// 防止反复绘制
}
}
包括楼主在内的5种实现方式我都放在了附件,欢迎大家交流
|
|