首页 » Web前端 » php表格距离配景技巧_纯前端表格控件SpreadJS 若何给多个单元格区域设置背景图

php表格距离配景技巧_纯前端表格控件SpreadJS 若何给多个单元格区域设置背景图

访客 2024-12-19 0

扫一扫用手机浏览

文章目录 [+]

SpreadJS官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网

有小伙伴有这样的需求:给一片单元格区域设置背景图,这该如何实现呢?

php表格距离配景技巧_纯前端表格控件SpreadJS  若何给多个单元格区域设置背景图

方案1:将这片单元格区域设置合并单元格,然后给这个合并单元格设置背景图。

sheet.getCell(0,0).backgroundImage("https://gcdn.grapecity.com.cn/uc_server/avatar.php?uid=52354&size=middle")

方案二:通过自定义单元格实现。

创建自定义单元格类型:

function WaterMarkCellType() {this.typeName = "WaterMarkCellType"}WaterMarkCellType.prototype = new GC.Spread.Sheets.CellTypes.Text();WaterMarkCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {//Paints a cell on the canvas.var background = style.backgroundImage;style.backgroundImage = undefined;GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments)GC.Spread.Sheets.CellTypes.Text.prototype.paint.call(this, ctx, undefined, x, y, w+100, h+100, {backgroundImage:background}, options)};

给单元格区域的左上角单元格设置此单元格类型,背景图片由此绘制。

var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));var sheet = spread.getActiveSheet();sheet.getCell(3, 3).cellType(new WaterMarkCellType()).backgroundImage('https://www.grapecity.com.cn/images/metalsmith/home/logo_spjs.png')sheet.setArray(2, 2, [[1,2,3,4,5,6,],[1,2,3,4,5,6,],[1,2,3,4,5,6,],[1,2,3,4,5,6,],[1,2,3,4,5,6,],[1,2,3,4,5,6,]])

办理滑动滚动条时,图片未完备绘制的问题。

缘故原由:

由于Demo中是把单个单元格中的背景图进行了放大绘制,而当滚动条滚动到目标单元格下方时,目标单元格并未被绘制,此时就会涌现问题。

办理办法是添加滚动条事宜,在事宜中注册setTimeout,将sheet重绘即可。
setTimeout韶光应掌握在不影响视觉效果的情形下只管即便长一些。

var setTimeoutId = null;sheet.bind(GC.Spread.Sheets.Events.TopRowChanged, function (s, e) {clearTimeout(setTimeoutId);// 这里的间隔韶光,在不影响视觉效果的情形下尽可能长一点setTimeoutId = setTimeout(function(){e.sheet.repaint();}, 50);});

终极效果如下图:

SpreadJS

纯前端表格控件SpreadJS,兼容 450 种以上的 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,备受华为、苏宁易购、天弘基金等行业龙头企业的青睐,并被中国软件行业协会认定为“中国精良软件产品”。
SpreadJS 可为用户供应类 Excel 的功能,知足表格文档协同编辑、 数据填报、 类 Excel 报表设计等业务场景需求,极大的降落企业研发本钱和项目交付风险。

本文转载自葡萄城

相关文章