使用HS中的HSSF从excel导入数据

时间:2015-06-01 22:08:45

标签: r excel

我尝试使用库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

但它不会奏效。

我的文件的页面受到保护,但不受文件本身的保护。

2 个答案:

答案 0 :(得分:0)

从包xlsx网站看来,使用受密码保护的电子表格的设施是一项仍在使用的功能 - 尽管用户希瑟已经做了修复。

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

但目前尚不清楚这是否也延伸到受保护的床单。

Fercho - 您可以尝试其他解决方法吗?

  1. 另存为csv并使用read.csv将数据导入R?
  2. 保存没有受保护工作表的Excel文件版本以进行数据输入?
  3. 尝试其他Excel到R程序,例如XLConnect?这个软件包看起来更新了。
  4. 编辑: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

我使用了两个密码来解锁工作表,我不知道密码是什么,所以我在每个文件上都尝试了。

再次感谢您的帮助。