在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 – 你可以尝试其他解决方法吗?
- 另存为csv并使用
read.csv
将数据导入R? - 保存没有受保护的表单的Excel文件的数据为您的数据input?
- 尝试像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
结束小组
我用两个密码来解锁床单,我不知道哪个密码是这样的,所以我在每个文件上都尝试。
再次感谢您的帮助。