2014-11-22 59 views
1
  • 文件:它是一個包含約100行7列的文件。 XLS擴展(MS Excel 97-2003)。
  • 問題:無法通過read.xlsxread.xlsx2讀取R中的文件。
  • 代碼用於嘗試讀取文件:無法從R中讀入.xls

    library(xlsxjars) 
    library(rJava) 
    library(xlsx) 
    excel <- read.xlsx("File.xls",sheetIndex=1,startRow=1,stringsAsFactor=F) 
    
  • 錯誤提示:

錯誤.jcall ("RJavaTools","Ljava/lang/object;","invokeMethod",cl,:java.lang.IllegalArgumentException異常:您的InputStream既不是OLE2流,也不是OOXML流。

PD:備案,我曾嘗試與read.csv讀它,它不看,而是因爲它是一個Excel文件,它不是用逗號或點號分隔,R讀取它,好像一切都在1列。也許任何人都可以建議通過read.csv來閱讀它的方法?

+0

在'read.csv'中調整'sep'參數或使用'read.table' – 2014-11-22 17:37:41

+0

你會用什麼sep?在Excel中,它由列分隔,而不是任何符號... – Victor 2014-11-22 17:38:57

+2

使用空格'sep =「」'或可能的選項卡'sep =「\ t」' – 2014-11-22 17:39:15

回答

4

有你說兩件事情,讓我覺得你不處理你認爲你正在處理的文件類型:

  1. Your InputStream was neither an OLE2 stream, nor an OOXML stream" 
    
  2. 「我曾嘗試與read.csv閱讀(),它並讀它......」

如果真的是在MS EXC文件el 97-2003本機格式,read.csv根本就沒有任何工作。來自read.xlsx的錯誤支持這一點。這似乎是一個文本文件,並且您在read.table中使用sep="\t"的評論允許正確讀取它以確認它。你有什麼是一個標籤分離的文本文件,恰好有後綴.xls

應該指出的是,文件的後綴不能保證文件是聲稱的格式。一個更好的指標是運行其上的file shell命令(如果該命令在您的操作系統上可用)。文件擴展名有時用於確定使用哪個應用程序打開文件。由於Excel能夠讀取製表符分隔的文件(並且因爲Excel可能不會被設置爲.tsv文件的默認應用程序(這將是更傳統的文件擴展名),所以通過使用.xls擴展名,文件將(通常)由Excel打開。

總之,僅僅因爲文件名以.xls結尾並不意味着它確實是一個Excel本機格式文件。

+0

這是一個比我所能給出的更好的解釋。 :)你教給我一些東西,而我所做的只是解決眼前的問題。 – 2014-11-22 23:01:11