找回密码
 立即注册

QQ登录

只需一步,快速开始

主音吉他手

初级会员

25

主题

105

帖子

292

积分

初级会员

积分
292
主音吉他手
初级会员   /  发表于:2023-10-19 14:24  /   查看:2480  /  回复:11
本帖最后由 主音吉他手 于 2023-10-20 12:55 编辑

设置整行背景色,被挡住了背景色颜色显示,需要怎么设置才能不被挡住?
WX20231019-142322@2x.png

测试6.xlsx

67.12 KB, 下载次数: 55

11 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-20 17:32:00
推荐
本帖最后由 Clark.Pan 于 2023-11-16 10:23 编辑

并不一定在代码上设置样式才会造成这样的问题,有可能原始的Excel文件中就已经设置好了样式。

如果后端返回数值1,第一行对应的索引是0,代码如下:

sheet.getRange(0(第一行), 0(第一列), 1(行数为1行), sheet.getColumnCount()(列数为sheet页上的列数)).backColor('red');

-------
总结:
导致本问题的原因是:
由于原始Excel中对应的单元格存在样式(单元格级别),根据样式优先级,单元格的优先级高于行优先级,所以导致行的样式被单元格的样式覆盖。
解决方法可以通过getRange获取区域后给目标区域设置背景色(此行为为单元格级别的样式设置),可以参考如下代码:
sheet.getRange(0(第一行), 0(第一列), 1(行数为1行), sheet.getColumnCount()(列数为sheet页上的列数)).backColor('red');




回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-19 16:43:22
沙发
您好,请问您是给前面这些有值的单元格设置了背景色为白色了嘛?
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-10-19 17:19:29
板凳
Joestar.Xu 发表于 2023-10-19 16:43
您好,请问您是给前面这些有值的单元格设置了背景色为白色了嘛?

没有哦,如果设置了白色,那截图后面的红色怎么跑出来了
这个设置是不是单元格>行优先级导致的?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-19 17:34:07
地板
您好,是的,结合您图中的这个表现,我猜测您是给前面这些有值的单元格设置了背景色为白色,然后再给整行设置了背景色为红色。

然而,由于样式优先级,单元格的优先级高于行优先级,所以导致行的样式被单元格的样式覆盖。
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-10-20 10:10:37
5#
本帖最后由 主音吉他手 于 2023-10-20 10:15 编辑
Joestar.Xu 发表于 2023-10-19 17:34
您好,是的,结合您图中的这个表现,我猜测您是给前面这些有值的单元格设置了背景色为白色,然后再给整行设 ...

这边的逻辑代码都注释了,只保留这个单元格背景色的操作,还是一样会出现,代码中没有设置过白色背景

代码就这一段

if (res.data.data.signRc.length > 0) {
              console.log(res.data.data.signRc);
              var style = new GC.Spread.Sheets.Style();
              res.data.data.signRc.forEach((item) => {
                style.backColor = "red";
                sheet.setStyle(
                  item,
                  -1,
                  style,
                  GC.Spread.Sheets.SheetArea.viewport
                );
              });
            }


回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-20 11:34:30
6#
您好,我看了一下您提供的代码,里面缺失很多参数的信息,无法准确判断问题出现的原因,还是请您提供一个可以复现该问题的Demo,我们这边帮助您调研看看。
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-10-20 12:56:34
7#
Joestar.Xu 发表于 2023-10-20 11:34
您好,我看了一下您提供的代码,里面缺失很多参数的信息,无法准确判断问题出现的原因,还是请您提供一个可 ...

上传了一张Excel表,帮忙看看,这张表就复现了这个问题
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-20 13:56:19
8#
您好,我将您的Excel文件导入后发现这些有值的单元格都已经有了对应的style。

image.png850509033.png

也就是说这些单元格就已经有了样式,所以行样式无法被应用上。

因此,要实现您的需求,只能是以单元格为单位设置样式:

sheet.getRange(0, 0, 1, sheet.getColumnCount()).backColor('red');
回复 使用道具 举报
主音吉他手
初级会员   /  发表于:2023-10-20 17:05:53
9#
Joestar.Xu 发表于 2023-10-20 13:56
您好,我将您的Excel文件导入后发现这些有值的单元格都已经有了对应的style。

在代码上是没有设置过这些单元格样式的,那如果后端只返回一个数值比如1,就是第一行需要增加背景色,是怎么修改呢?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部