在R中从HSSF导入excel中的数据

我试图从一个Excel文件导入数据到R,与图书馆xlsx 。 我得到的错误:

错误.jcall(“RJavaTools”,“Ljava / lang / Object;”,“invokeMethod”,cl,:org.apache.poi.EncryptedDocumentException:提供的电子表格似乎是encryption的.xlsx文件,必须先解密由XSSF使用,HSSF不能使用它

我将文件从filename.xlsx更改为filename.xls ,但我不断收到相同的消息

我也尝试了这个链接的build议:

将密码保护的xlsx工作簿导入到R中

如何将保护模式下的xlsx文件读取到R

但它不会工作。

我的文件的表被保护,但不是文件本身。

xlsx网站上看来, 使用密码保护电子表格的设备似乎仍然是一个function,尽pipeHeather已经做了一个修复。

请参阅https://code.google.com/p/rexcel/issues/detail?id=49

但是,这是否也延伸到受保护的页面还不清楚。

Fercho – 你可以尝试其他解决方法吗?

  1. 另存为csv并使用read.csv将数据导入R?
  2. 保存没有受保护的表单的Excel文件的数据为您的数据input?
  3. 尝试像XLConnect其他Excel程序? 这个包似乎更新。

编辑:芒果解决scheme有Excel和R工具的比较。 openxlsx可以处理受密码保护的表单,但比XLConnect慢。

代码为1以上

 ' Microsoft for Excel VBA for saving as csv ' First Select your sheet to turn to CSV file and then run code like this ' Save sheet as csv ThisWorkbook.SaveAs Filename:=strSaveFilename, _ FileFormat:= xlCSV 

Workbook.SaveAs方法的SYNTAXexpression式.SaveAs(FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended,CreateBackup,AccessMode,ConflictResolution,AddToMru,TextCodepage,TextVisualLayout,Local)

谢谢,我最终在VBA中做了这个工作,但需要一点时间,但是工作起来,这里是我用于VBA的代码。

Sub LoopThroughFiles()

 FolderName = "C:folder with files\" If Right(FolderName, 1) <> Application.PathSeparator Then FolderName = FolderName & Application.PathSeparator Fname = Dir(FolderName & "*.xls") 'loop through the files Do While Len(Fname) With Workbooks.Open(FolderName & Fname) Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets On Error Resume Next ws.Unprotect Password:="password 1" ws.Unprotect Password:="password 2" 

在错误转到0下一个ws

 For Each w In Application.Workbooks w.Save Next w End With ' go to the next file in the folder Fname = Dir Loop 

Application.Quit

结束小组

我用两个密码来解锁床单,我不知道哪个密码是这样的,所以我在每个文件上都尝试。

再次感谢您的帮助。