我想使用R中的OpenXLSX在一个单元格上添加一个注解,只有当满足某些条件时(单元格不是空的,不同的列包含特定的文本)。不确定这是否可能。
当然,我可以有条件地应用基于以下条件的样式:
Name<- c("Bob", "Fred", "Smith", "Henry", "Joe")
Other<- 1:5
df<- data.frame(Name, Other)
wb <- createWorkbook()
addWorksheet(wb, "Names")
writeData(wb, 1, df, startRow = 1, startCol=1, colNames = F)
West<- createStyle(bgFill = "#DCE6F1")
conditionalFormatting(wb, 1, cols = 2, rows = 1:5, rule = 'AND($A1 == "Smith", $B1<>"")', style = West)
但是,正如预期的那样,尝试将其与writeComment
结合使用只会返回一个错误,即style必须是Style对象:
conditionalFormatting(wb, 1, col = 2, rows = 1:5, rule = 'AND($A1 == "Smith", $B1<>"")', style = writeComment(wb, 1, col = "B", row = which(df$Name == "Smith"), comment = createComment(comment = "Test Comment")))
有什么办法可以做到这一点吗?
2条答案
按热度按时间vpfxa7rd1#
您可以通过在openxlsx函数外确定符合注解
com_row
的行来实现这一点;然后在writeComment
函数中使用com_row
。其结果是:
创建于2023-06-07,使用reprex v2.0.2
对于没有行满足条件的情况。
没有满足条件的行的数据框的工作簿输出:
oprakyz72#
我的方法与Peters类似,只使用
openxlsx2
,而不使用条件格式。