我尝试使用库xlsx
将数据从excel文件导入到R中。我收到错误:
.jcall错误(" RJavaTools"," Ljava / lang / Object;"," invokeMethod", cl,:org.apache.poi.EncryptedDocumentException:提供的 电子表格似乎是一个加密的.xlsx文件。它必须被解密 在XSSF使用之前,HSSF不能使用它
我将文件从filename.xlsx
更改为filename.xls
,但我不断收到同样的消息
我也尝试过这个链接的建议:
Import password-protected xlsx workbook into R
How to read xlsx file in protect mode to R
但它不会奏效。
我的文件的页面受到保护,但不受文件本身的保护。
答案 0 :(得分:0)
从包xlsx
网站看来,使用受密码保护的电子表格的设施是一项仍在使用的功能 - 尽管用户希瑟已经做了修复。
请参阅https://code.google.com/p/rexcel/issues/detail?id=49
但目前尚不清楚这是否也延伸到受保护的床单。
Fercho - 您可以尝试其他解决方法吗?
read.csv
将数据导入R?编辑:Mango Solutions对Excel and R工具进行了比较。 openxlsx
可以处理受密码保护的工作表,但速度比XLConnect慢。
高于1的CODE
' 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 Method '语法表达式.SaveAs(FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended,CreateBackup,AccessMode,ConflictResolution,AddToMru,TextCodepage,TextVisualLayout,Local)
答案 1 :(得分:0)
谢谢,我终于在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"
On Error GoTo 0 接下来是
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
End Sub
我使用了两个密码来解锁工作表,我不知道密码是什么,所以我在每个文件上都尝试了。
再次感谢您的帮助。