【问题标题】:Is there a way to open, save, and then close excel files in a directory in R?有没有办法在 R 的目录中打开、保存和关闭 excel 文件?
【发布时间】:2021-11-18 04:49:39
【问题描述】:

基本上,每天早上都会通过电子邮件将一些 Excel 报告发送给我们。我将它们直接下载到指定的驱动器,然后在 R 中进行处理。

问题是在 R 中运行我的脚本之前,我必须手动打开每个文件并保存它们。如果不是这样,就会发生这种情况:

当我进入并手动打开并保存文件并重新运行我的脚本时。我得到正确的结果:

首先,你们知道为什么会这样吗?其次,是否有一个功能可以让我打开这些文件并保存它们。我确实尝试过openxlsx。但是,我仍然需要手动按下保存按钮。

这是我为引入文件而创建的函数:

store.FUN = function(x)
    {
       m = as.data.frame(read_excel(file))
       names(m) = c(1:length(m))
       m[1, 1] = str_sub(m[2, 1], 13)
       m = bind_rows((m)[1, ], subset(m, (m)[1] == "Total Income"))
       m[2, 1] = m[2, 2]
       m = m[-c(2)]
       return(m)
    }

district_1.stores = sapply(store.file, store.FUN, simplify=FALSE) %>% 
        bind_rows(.id = "Store ID")

谢谢!

编辑:所以看起来单元格是公式化的:

但是,如果我什么都不做,只保存文件并返回 R 执行脚本,那么数字就可以了。

这里是一个excel文件的例子: enter image description here

【问题讨论】:

  • "手动打开每个文件" --> 这是否意味着您在 Excel 中打开通过电子邮件发送给您的 excel 文件,并将其保存到新的 xlsx 文件中?而且这个版本能正确读入R,而你收到的版本却没有?
  • 请显示您用来打开文件的代码。有几个不同的包可以帮助处理 excel 文件,它们可能与您正在使用的示例不同。您知道生成 excel 文件的计算机/软件是什么类型的吗?
  • 因此 quickbooks 会为我们的一些商店发送每日损益表。如果我只是右键单击并将它们保存到驱动器中而不打开文件,R 会将这些值读取为零。但是,如果我打开文件并只是简单地保存它并重新运行脚本,R 就能够读取这些值。要将文件导入 R,我只需使用 read_excel。
  • 嗯,excel文件中的单元格是公式还是实际值?这些是启用宏的工作簿吗?
  • 这里深入探讨了在 R 中打开 excel 文件的不同方法。这些替代方法中的任何一个更适合您吗? lgreski.github.io/dsdepot/2020/06/13/reading-Excel-files.html。我认为 XLConnect 或 xlsx 更有可能评估公式。

标签: r excel openxlsx


【解决方案1】:

我花时间在 github 上为openxlsx 发布问题。

Tl;dr:这不是错误,它是从 Excel 导入/导出到 Excel 时的内置“问题”,并且适用于所有此类包。如果 Excel 工作表包含公式,开发人员会确切建议 TO 所做的事情:首先在 Excel 中打开文件,保存它,然后才将其导入 R。这没有回答 TO 的问题(即如何打开和保存 Excel通过 R 自动提交文件),但我仍然发布了这个答案,因为它添加了一些有用的上下文。

https://github.com/ycphs/openxlsx/issues/261https://github.com/ycphs/openxlsx/issues/188#issuecomment-832591241

【讨论】:

    【解决方案2】:

    其实刚刚发现我可以使用R中的“reticulate”包来运行一个python模块来实现这个目的。

    感谢大家的帮助!

    【讨论】:

    • 虽然这不一定是解决方案。它正在避免现有的问题/错误。
    猜你喜欢
    • 2019-08-02
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    相关资源
    最近更新 更多