You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R调用excelcnv.exe转.xls为.xlsx报错0x0000142及解决方法

解决R调用excelcnv.exe转换.xls到.xlsx时的0x0000142错误

最近我在写R脚本处理多源数据时遇到个头疼的问题:有个数据源只有.xls格式,R没法直接读取,但转成.xlsx就完全正常。手动在CMD里执行excelcnv.exe命令能顺利完成转换,但用R的system2()函数调用时,系统直接卡顿,最后弹出**excelcnv.exe - 应用程序错误,应用程序无法正常启动(0x0000142)**的提示。

失败的尝试(system2调用)

最开始我用system2()来拼接参数,代码是这样的:

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)

结果就是上面说的,直接报错崩溃。

成功的解决方案(转义后用system调用cmd.exe)

折腾半宿后终于找到了解决办法:需要用转义字符处理路径里的特殊字符,然后通过system()调用cmd.exe来执行命令。关键是要注意两个转义规则:

  • 路径里的反斜杠\要写成\\
  • 包含空格的路径需要用双引号包裹,而双引号本身要转义成\"

最终能用的代码如下:

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)

执行这段代码后,excelcnv.exe就能正常运行,顺利完成.xls到.xlsx的转换了。

内容的提问来源于stack exchange,提问作者danishFlint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:55:44