2012-12-21 15 views
10

Jak mogę zaimportować arkusz roboczy ze skoroszytu chronionego hasłem xlsx do R?Importowanie chronionego hasłem arkusza xlsx do R

Chciałbym móc przekonwertować arkusz programu Excel na plik csv bez konieczności przechodzenia przez sam Excel.

Jest możliwe dla skoroszytów xls używających funkcji perl xls2csv z pakietu gdata. Odkrywam, że problem jest Spreadsheet::XLSX nie obsługuje go.

Istnieje wiele funkcji i pakietów do importowania nieszyfrowanych skoroszytów xlsx, ale żaden z nich nie rozwiązuje tego problemu.

Obecnie wydaje się, że jedyną alternatywą jest przejrzeć Excel lub dowiedzieć się, jak napisać kod perla, który może to zrobić.

Odpowiedz

0

Aby zbudować na odpowiedź model ED82, istnieją kilka Ostrzeżenia:

  1. Może być konieczne przekazanie innego parametru hasła, WriteResPassword. See docs here

  2. Po uruchomieniu pakietu Xlsx R nie przekonał mnie interfejs COM do nauki. Więc wolałbym od razu zapisać kopię chronionego pliku Excel bez hasła, zamknij ją, a czytać go w innym opakowaniu:

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 = ...) 
Powiązane problemy