无法从R读取.xls

  • 文件:它是一个约100行7列的文件。 XLS扩展(MS Excel 97-2003)。
  • 问题:无法用R通过read.xlsxread.xlsx2读取文件。
  • 用于尝试读取文件的代码:

     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既不是OLE2stream,也不是OOXMLstream。

PD:为了logging,我试着用read.csv来读取它, read.csv它读取它,但是因为它是一个Excel文件,并且没有用逗号或点隔开,所以R读取它,好像所有东西都在1列中一样。 也许任何人都可以build议通过read.csv读取它的read.csv

有两件事你说过,让我觉得你没有处理你认为你正在处理的文件types:

  1.  Your InputStream was neither an OLE2 stream, nor an OOXML stream" 
  2. “我确实试图用read.csv()读取它,它确实读取它…”

如果它确实是MS Excel 97-2003本机格式的文件,那么read.csv根本就不能工作。 read.xlsx的错误支持这个。 这似乎是一个文本文件,并且您在read.table中使用sep="\t"注释允许正确读取它来确认它。 你有什么是一个标签分离的文本文件,恰好有后缀.xls

应该指出的是,文件的后缀不能保证文件是声称的格式。 一个更好的指标是在其上运行file shell命令(如果该命令在您的操作系统上可用)。 文件扩展名有时用于确定使用哪个应用程序来打开文件。 由于Excel能够读取制表符分隔的文件(因为Excel可能没有被设置为.tsv文件的默认应用程序,这将是更传统的文件扩展名),所以使用.xls扩展名,文件将一般)由Excel打开。

总之,仅仅因为文件名以.xls结尾并不意味着它确实是一个Excel原生格式文件。