Gdata package perl issue

50,899

Solution 1

After loading the gdata package using library(gdata) it clearly says:

gdata: read.xls() will be unable to read Excel XLS and XLSX files gdata: unless the 'perl=' argument is used to specify the location of a gdata: valid perl intrpreter.

So, you need the PATH to the valid perl interpreter. Using windows, as is the case here, you need to check the properties to locate the required perl interpreter.

#set the PATH to perl interpreter
perl <- "C:/strawberry/perl/bin/perl5.18.2.exe"

try1file <- read.xls("my.one.filename.xls", perl = perl)

For multiple xls files:

> length(list.files())
[1] 65

try65files <- lapply(list.files(), ..., perl = perl) 

If verbose = TRUE, at the end of each file it will read:

Loading 'F65.xls'...
Done.
Orignal Filename: F65.xls
Number of Sheets: 1
Writing sheet number 1 ('Sheet1') to file 'C:\Users\FRANKL~1.JOH\AppData\Local\Temp\RtmpeKs3fi\file13dc750950e4.csv'
Minrow=0 Maxrow=32 Mincol=0 Maxcol=16
  (Ignored 0 blank lines.)
0 
Done.
Reading csv file  “C:\Users\FRANKL~1.JOH\AppData\Local\Temp\RtmpeKs3fi\file13dc750950e4.csv” ...
Done.

Solution 2

As some other answers say already the problem is that perl.exe is missing. In my case it worked after getting it installed from: http://www.activestate.com/activeperl/downloads and then point to it:

    read.xls("bla.xlsx", perl = "C:\\Perl64\\bin\\perl.exe")

Solution 3

The problem went away after I ran the following script and restarted the PC:

library(gdata)
installXLSXsupport(perl = 'C:\\strawberry\\perl\\bin\\perl.exe')

Solution 4

I have recently got the same problem with gdata package and Strawberry Perl software under Windows 10. The solution in my case is as follows: (1) uninstall an old version of the Strawberry Perl -- if you try to install new version over the old one, it says that it is not upgradable, (2) install a new version downloaded from this link to C:/Strawberry/, (3) add C:/Strawberry/perl/bin/perl.exe to 'Path' in User variables of the Environment Variables window.

Share:
50,899
AME
Author by

AME

Updated on March 31, 2020

Comments

  • AME
    AME about 4 years

    I am attempting to follow this easy 2-minute video tutorial on importing an Excel spreadsheet into R as a data frame: http://www.screenr.com/QiN8

    I followed each step, including downloading and installing Strawberry Perl (32-bit) on my Win 7 PC, pointing R to my working directory, and entering the following command in R:

    Spreadsheet <- read.xls("targetspreadsheet.xls")
    

    I receive this error:

    Error in findPerl(verbose = verbose) : perl executable not found. Use perl= argument to specify the correct path. Error in file.exists(tfn) : invalid 'file' argument

    Update:

    I reset my machine and set the path to Perl:

    perl <- "C:/strawberry/perl/bin/perl.exe"
    

    Then I entered this command:

    DF <- read.xls("spreadsheet.xls", perl = perl)
    

    The command line returned this error:

    Error in xls2sep(xls, sheet, verbose = verbose, ..., method = method, : Intermediate file 'C:\Users\AEID\AppData\Local\Temp\RtmpoXMywa\file18e45ed513c.csv' missing! In addition: Warning message: running command '"C:\STRAWB~1\perl\bin\perl.exe" "C:/Users/AEID/Documents/R/win-library/2.15/gdata/perl/xls2csv.pl" "GFT_show_wip_report(42).xls" "C:\Users\AEID\AppData\Local\Temp\RtmpoXMywa\file18e45ed513c.csv" "1"' had status 2 Error in file.exists(tfn) : invalid 'file' argument

    What am I doing wrong?

    Thanks in advance for your help!

    AME

  • Antonio
    Antonio about 4 years
    I would like to point out that @Igor Krupitsky provided a permanent way of pointing at the valid perl interpreter, rather than specifying it every time you need to import an excel file. See answer below. I would edit this answer adding this