11

我正在尝试将 R 数据框写入 Excel,并希望添加具有 Excel 公式和/或数据验证值的其他单元格/列(例如,使用 Excel 中的数据/验证菜单提供允许值的下拉列表细胞)

我查看了 R 包:xlsx、XLConnect 和 openxlsx。这些非常适合编写单元格,但不适用于公式数据验证设置

我目前认为我必须使用 AppleScript(在 Mac 上)或 VBA 解决方案对 xlsx 文件进行后处理。如果可能的话,我想在 R 中完成这一切,这样逻辑就不必跨程序拆分。

两者之中:为单元格编写数据验证设置(与编写 Excel 公式相比)更为重要。用例是将 R 数据框写入 Excel,并包含用于更正的空列。对于空列,我想要该列的可接受值(例如“是”/“否”)的下拉列表。

提前致谢。

4

2 回答 2

12

下面的示例显示了如何将下拉列表添加到 Excel 单元格。

# Libraries
library(openxlsx)

# Create workbook
wb = createWorkbook()

# Add worksheet "Customers" to the workbook
addWorksheet(wb, "Customers")

# Create Customers dataframe
customers_df = data.frame("Name" = c("Alex", "Kate", "Mary"), "Gender" = 
c("male", "female", "female"))

# Add Customers dataframe to the sheet "Customers"
writeData(wb, sheet = "Customers", x = customers_df, startCol = 1)

# Add worksheet "Drop-down values" to the workbook
addWorksheet(wb, "Drop-down values")

# Create drop-down values dataframe
gender_values_df = data.frame("Gender" = c("male", "female"))

# Add drop-down values dataframe to the sheet "Drop-down values"
writeData(wb, sheet = "Drop-down values", x = gender_values_df, startCol = 
1)

# Add drop-downs to the column Gender on the worksheet "Customers"
dataValidation(wb, "Customers", col = 2, rows = 2:4, type = "list", value = 
"'Drop-down values'!$A$2:$A$3")

# Save workbook
saveWorkbook(wb, "D:/Customers.xlsx", overwrite = TRUE)

更多信息可以在这里找到:dataValidation

于 2019-03-15T21:51:12.677 回答
0

作为在 R 和 Excel 之间来回穿梭的人,我建议您在这种情况下让 Excel 驱动工作流程。要么编写 Excel 宏以从 R 创建的文件中导入数据,要么使用 RExcel(Excel 插件),它允许从 Excel 交互式控制 R 会话。

于 2015-05-04T14:28:33.163 回答