【问题标题】:R: cannot run specific cmd code that converts .xls to .xlsxR:无法运行将 .xls 转换为 .xlsx 的特定 cmd 代码
【发布时间】:2020-04-02 12:38:10
【问题描述】:

长期阅读,第一次写作......

我正在编写一些 R 代码,这些代码将从其他来源获取一些数据输入。 一个地方只能以 .xls 格式提供数据。虽然 R 中有很好的 excel 功能,但无法从 R 中读取这个 .xls 文件。但是如果我将它转换为 .xlsx,R 处理得很好。所以我要转换它。

在直接的 cmd 输入中,我无法通过以下方式进行转换:

"C:/Program Files (x86)/Microsoft Office/root/Office16/excelcnv.exe" -oice "C:/Users/my_name/OneDrive - work/Documents/Dashboard code/New Code/work_STD_TEMPLATE.xls" "C:/Users/my_name/OneDrive - work/Documents/Dashboard code/New Code/work_STD_TEMPLATE2.xlsx"

但我希望自动化代码,所以最好实现它。有关我可以编译和运行的版本,请参见下文。

R代码:

args = c("C:/Program Files (x86)/Microsoft Office/root/Office16/excelcnv.exe" , 
         '-oice' , "C:/Users/my_name/OneDrive - work/Documents/Dashboard code/New Code/work_STD_TEMPLATE.xls" , "C:/Users/my_name/OneDrive - work/Documents/Dashboard code/New Code/work_STD_TEMPLATE2.xlsx");
system2(args)

但是当它运行时它会停止系统并最终提示一个弹出框告诉我:

excelcnv.exe - 应用程序错误 应用程序无法正确启动 (0x0000142)。

为此,我需要有头脑的人。提前致谢

昨晚找到答案:

 args = "\"C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\excelcnv.exe\" -oice \"C:\\Users\\my_name\\OneDrive - work\\Documents\\Dashboard code\\New Code\\work_STD_TEMPLATE.xls\" \"C:\\Users\\my_name\\OneDrive - work\\Documents\\Dashboard code\\New Code\\work_STD_TEMPLATE2.xlsx\""
   system("cmd.exe" , input = args)

我需要转义转义字符...所以 \ 必须是 \ 并且 " 必须是 \"

【问题讨论】:

  • 你试过R包xlsx吗?
  • 或 readxl - readxl.tidyverse.org?
  • 两者都是。普通 excel 也不会打开文件,但只有在转换为 .xlsx 时才会触摸它(数据提取来自遗留系统 anno 1997,打开格式时纯属癌症。多色和不同的字体。但我需要数据)

标签: r excel cmd


【解决方案1】:

昨晚找到答案:

 args = "\"C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\excelcnv.exe\" -oice \"C:\\Users\\my_name\\OneDrive - work\\Documents\\Dashboard code\\New Code\\work_STD_TEMPLATE.xls\" \"C:\\Users\\my_name\\OneDrive - work\\Documents\\Dashboard code\\New Code\\work_STD_TEMPLATE2.xlsx\""
   system("cmd.exe" , input = args)

我需要逃脱承租人的转义字符...所以\必须是\并且“必须是\”

【讨论】:

    【解决方案2】:

    您可以使用 RDCOMClient R 包使用以下功能将 XLS 文件转换为 XLSX 文件:

    convert_XLS_File_To_XLSX <- function(path_XLS_File, path_XLSX_File)
    {
      xlApp <- COMCreate("Excel.Application")
      xlApp[['Visible']] <- FALSE
      xlWbk <- xlApp$Workbooks()$Open(path_XLS_File)
      xlWbk$SaveAs(path_XLSX_File, 51)
      xlWbk$Close()
      xlApp$Quit()
    }
    
    library(RDCOMClient)
    convert_XLS_File_To_XLSX(path_XLS_File, path_XLSX_File)
    

    从我的角度来看,这是一个有趣的选择。

    【讨论】:

      猜你喜欢
      • 2022-09-25
      • 2012-09-06
      • 1970-01-01
      • 2013-01-25
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      相关资源
      最近更新 更多