2012-12-21 32 views
10

Làm cách nào để nhập một trang tính từ sổ làm việc xlsx được bảo vệ bằng mật khẩu vào R?Nhập sổ làm việc xlsx được bảo vệ bằng mật khẩu vào R

Tôi muốn có thể chuyển đổi trang tính Excel thành tệp csv mà không phải tự đi qua Excel.

Có thể cho sổ làm việc xls sử dụng chức năng dựa trên perl xls2csv từ gói gdata. Tôi thu thập rằng vấn đề là Spreadsheet::XLSX không hỗ trợ nó.

Có nhiều chức năng và gói khác nhau để nhập sổ làm việc xlsx không được mã hóa, nhưng không có chức năng nào giải quyết vấn đề này.

Hiện tại có vẻ như các lựa chọn thay thế duy nhất là đi qua Excel hoặc tìm ra cách viết mã perl có thể thực hiện.

Trả lời

4

Có vẻ là những gì bạn cần trừ nó không phải là với gói xlsx:

https://stat.ethz.ch/pipermail/r-help/2011-March/273678.html

library(RDCOMClient) 
eApp <- COMCreate("Excel.Application") 
wk <- eApp$Workbooks()$Open(Filename="your_file",Password="your_password") 
tf <- tempfile() 
wk$Sheets(1)$SaveAs(tf, 3) 
0

Để xây dựng dựa trên câu trả lời ed82, có một vài hãy cẩn thận:

  1. Bạn có thể cần phải chuyển một thông số mật khẩu khác, WriteResPassword. See docs here

  2. Tôi không tìm thấy giao diện COM hấp dẫn sau khi tôi đã quen với gói xlsx R. Vì vậy, tôi thà lưu một bản sao của tập tin Excel được bảo vệ mà không có một mật khẩu ngay lập tức, hãy đóng nó, và đọc nó với một gói khác:

eApp <- COMCreate("Excel.Application") 

# Find out whether you need to pass **Password** or **WriteResPassword** 
wk <- eApp$Workbooks()$Open(Filename= filename, Password="somepass",        WriteResPassword = "somepass") 

# Save a copy, clear the password (otherwise copy is still pass-protected) 
wk$SaveAs(Filename = '...somepath...', WriteResPassword = '', Password = '') 

# The copied file is still open by COM, so close it 
wk$Close(SaveChanges = F) 

# Now read into data.frame using a familiar package {xlsx} 
my.data <- raed.xlsx('...somepath...', sheetIndex = ...) 
Các vấn đề liên quan