为什么 Excel 删除在 R 中创建的条件格式?

问题描述 投票:0回答:1

我正在使用 R 对 .xlsx 文档中的单元格进行条件着色。 R 代码运行顺利,没有错误,并可以正常创建我的 .xlsx 文档。但是,当我用 Excel 打开 .xlsx 文件时,Excel 指出:

“我们发现 {file name} 中的某些内容存在问题,您希望我们尽力恢复吗?”。

我选择“是”,文件将打开,不包含阴影,并出现一个窗口,显示:

“删除了功能:/xl/worksheets/sheet7.xml 部分的条件格式”。

我的 R 代码似乎正在运行并应用条件格式,但随后 Excel 由于某种原因将其删除。

这是我的 R 代码:


data_output_root = paste0(project_root, "/Output/2022/NI Table 3 SOC2/")

data_template_root = paste0(project_root, "/Template/2022/NI Table 3 SOC2/")

 

new_workbook <- loadWorkbook(paste0(data_template_root, "Occupation SOC20 (2) Table 3 (NI).1   Weekly pay - Gross 2022.xlsx"))

 

# Read in xls file that data will come from

data_from_xlsCV <- read_xls(paste0(data_input_root, "Work Region Occupation SOC20 (2) NI Table 3 (NI).1b   Weekly pay - Gross 2022 CV.xls"), sheet = "Male")

 

selected_data <- data_from_xlsCV[6:41, 2:17]

 

selected_data <- sapply(selected_data, as.numeric)

 

selected_data <-format(selected_data, nsmall= 1)

 

# Write selected data into selected workbook

writeData(new_workbook, sheet = "Table3.1b Male CV",

          x = selected_data,

          startRow = 10, startCol = 2,

          colNames = FALSE)

 

# Create and apply formatting

cvFive <- createStyle(bgFill = "#5bc0de",

                      numFmt = "#,###.#",

                      halign = "right",

                      fontSize = 12)

 

cvTen <- createStyle(bgFill = "#428bca",

                     numFmt = "#,###.#",

                     halign = "right",

                     fontSize = 12)

 

conditionalFormatting(new_workbook, sheet = "Table3.1b Male CV",

                      rows = 10:45, cols = 3:17,

                      rule = "between", operator = c(5,9),

                      style = cvFive)

 

conditionalFormatting(new_workbook, sheet = "Table3.1b Male CV",

                      rows = 10:45, cols = 3:17,

                      rule = "between", operator = c(10,20),

                      style = cvTen)

 

# Save new workbook to Output folder

saveWorkbook(new_workbook, paste0(data_output_root,"Occupation SOC20 (2) Table 3 (NI).1   Weekly pay - Gross 2022.xlsx"), overwrite = TRUE)

我正在使用 Microsoft 365 应用中的 Excel 版本 2306。

我不知道要尝试什么来解决这个问题。

r excel conditional-formatting
1个回答
0
投票

看起来您在这里使用的是 openXLSX(为了将来的参考,包含您正在使用的软件包会很有帮助)。如果您查看 openXLSX 的手册,您可以在第 16 页上找到许多如何使用条件格式功能的示例。没有运算符参数,而是您需要类似这样的内容:

conditionalFormatting(new_workbook, sheet = "Table3.1b Male CV",
                      rows = 10:45, cols = 3:17, 
                      type = "between", 
                      rule = c(5,9), 
                      style = cvFive)

值得注意的是,仅仅因为 R 运行代码没有错误,并不意味着它可以正常工作,尤其是在 OpenXLSX 中,在打开文件之前某些操作不会发生 - 这可能就是您发现很难解决此问题的原因。

© www.soinside.com 2019 - 2024. All rights reserved.