用锁定的单元格将Excel文件读入R

时间:2018-07-10 16:53:37

标签: r excel

我有一个Excel电子表格可以读入R,该电子表格既受密码保护又具有锁定的单元格。我可以使用excel.link导入受密码保护的文件,但是我不知道如何解锁/取消保护单元格。 excel.link给我这个错误:

> <checkErrorInfo> 80020009  Error in top_left_corner[["CurrentRegion"]]
> :    You cannot use this command on a protected sheet. To use this
> command, you must first unprotect the sheet (Review tab, Changes
> group, Unprotect Sheet button). You may be prompted for a password.
> (Microsoft Excel)

欢迎任何建议。我可以手动取消保护单元格,但是每天必须对数百个文件执行此操作。

我的最终目标是将100多个电子表格中的数据导入R中进行分析。我不需要导出回Excel。我也不需要将受保护的单元格导入R,因此,如果有一种方法可以跳过它们,那将是可行的。

编辑:与该操作有关的新问题已经出现。尝试在共享工作簿上进行提取时,R中出现错误:

  

80020009错误:发生异常。

如果我手动进入Excel并取消共享工作簿(在“查看”->“共享工作簿”->“取消选中允许多名用户进行更改”下)。 excel.link是否可以通过编程方式做到这一点?

1 个答案:

答案 0 :(得分:1)

尝试以下代码:

library(excel.link)
filename = "shared.xlsx"
xl.workbook.open(filename, password = "test")
# here we resave workbook to the temporary folder with exclusive access
new_path = paste0(tempdir(), "\\", filename)
xl()[["Activeworkbook"]]$saveas(new_path, AccessMode=xl.constants$xlExclusive)
###
xl()[["Activesheet"]]$Unprotect(password = "test")
data = crc[a1]
xl.workbook.close()
unlink(new_path) # remove temporary Excel File

更新2018.07.16添加用于保存具有独占访问权限的工作簿的代码。