You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

formattable单元格显示HTML代码问题:如何正常显示加粗total文本?

解决formattable中total单元格显示HTML标签而非加粗样式的问题

问题分析

你的代码存在两个关键问题导致异常:

  1. CSS属性拼写错误:将font.weight误写为front.weight,导致加粗样式本就无法正常生效
  2. 格式化规则冲突:同时设置了整行(第3行)的span格式化规则和category列的单独格式化规则,当category列值为total时直接返回原始值x,触发HTML标签转义,最终显示成带标签的文本而非样式化内容

修复方案

方案1:合并规则,统一处理样式

直接在category列的格式化规则中同时处理颜色和加粗,避免规则冲突,同时修正属性拼写错误:

library(tidyverse)
library(formattable)

df <- data.frame(category=c('a','b','total'),value=c(1,2,3))
formattable(df,list(
  category = formatter("span", 
                       style = x ~ style(
                         color = ifelse(x != 'total', "red", "inherit"),
                         font.weight = ifelse(x == 'total', "bold", "normal")
                       )),
  # 给第3行的value列也设置加粗
  value = formatter("span",
                    style = x ~ ifelse(x == 3, style(font.weight = "bold"), style()))
))

方案2:保留整行规则,修正列规则逻辑

如果需要保留整行的样式设置,修改category列的规则,确保值为total时不直接返回原始值,而是通过style传递样式,同时修正属性拼写:

library(tidyverse)
library(formattable)

df <- data.frame(category=c('a','b','total'),value=c(1,2,3))
formattable(df,list(
  area(row = 3) ~ formatter("span", style = x ~ style(font.weight = "bold")),
  category = formatter("span", 
                       style = x ~ ifelse(x != 'total', style(color = "red"), style()))
))

这里去掉了category规则中x ~ ifelse(...)的返回值逻辑,让整行的格式化规则能正确应用到total单元格上,同时保留非total值的红色样式。

内容的提问来源于stack exchange,提问作者anderwyang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:30:56