【问题标题】:R / openxlsx / Finding the first non-empty cell in Excel fileR / openxlsx / 在Excel文件中查找第一个非空单元格
【发布时间】:2019-06-17 03:01:58
【问题描述】:

我正在尝试将数据从 R 写入现有的 Excel 文件,同时保留格式。我可以按照这个问题的答案 (Write from R into template in excel while preserving formatting) 这样做,除了我的文件在开头包含空列,所以我不能只是开始在单元格 A1 处写入数据。

作为一种解决方案,我希望能够找到第一个非空单元格,然后从那里开始写作。如果我使用openxlsx 包运行read.xlsx(file="myfile.xlsx"),则会自动删除空列和行,只留下数据,所以这对我不起作用。

所以我想我会先使用wb <- loadWorkbook("file.xlsx") 加载工作表,这样我就可以访问getStyles(wb)(这可行)。但是,随后的命令getTables 返回character(0),而wb$tables 返回NULL。我想不通这是为什么?我是否正确,这些变量会告诉我第一个非空单元格?

我尝试直接在 Excel 文件中手动删除数据前面的空列和行,但这并没有改变。我是在正确的道路上还是有不同的解决方案?

【问题讨论】:

  • 我开始做某事,但没有成功。我可以提供的是,“表格”可能是指 Excel 中的表格对象,来自功能区中的 INSERT >> 表格。
  • 也许tidyxl 在这里会有所帮助。
  • 是的!就是这样!

标签: r openxlsx


【解决方案1】:

正如Stéphane Laurent 所建议的,包tidyxl 在这里提供了完美的解决方案。

例如,我现在可以在 Excel 文件中搜索字符值,例如我感兴趣的变量名(“Item”、“Score”和“Mean”,它们对应于 names()data.frame我想写入我的 Excel 文件):

require(tidyxl)
colnames <- c("Item","Score","Mean")
excelfile <- "FormattedSheet.xlsx"
x <- xlsx_cells(excelfile)

  # Find all cells with character values: return their address (i.e., Cell) and character (i.e., Value)
  chars <- x[x$data_type == "character", c("address", "character")]

  starting.positions <- unlist(
    chars[which(chars$character %in% colnames), "address"]
  )
     # returns: c(C6, D6, E6)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2012-06-24
    • 2018-02-01
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多