2014-11-22 2 views
1
  • Файл: это файл с примерно 100 строками и 7 столбцами. Расширение XLS (MS Excel 97-2003).
  • Неисправность: невозможно прочитать в файле с R по read.xlsx или read.xlsx2.
  • Код, используемый, чтобы попытаться прочитать файл: побудилаНевозможно прочитать .xls от R

    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

Отрегулируйте аргумент 'sep' в' read.csv' или используйте 'read.table' –

+0

какой sep вы бы использовали? в Excel он разделяется столбцами, а не символом, в частности ... – Victor

+2

Используйте пробел 'sep =" "' или, возможно, вкладку 'sep =" \ t "' –

ответ

4

Есть две вещи, которые вы утверждали, что заставляют меня думать, что вы не имеете дело с типом файла, который вы думаете, что вы имеете дело с:

  1. Your InputStream was neither an OLE2 stream, nor an OOXML stream" 
    
  2. «Я стараюсь читать с read.csv() и он прочитал ...»

Если это действительно был файл в MS Ехс el 97-2003 родной формат (ы), read.csv не работал бы на нем. Эта ошибка поддерживает read.xlsx. Это текстовый файл, и ваш комментарий, который использует sep="\t" в read.table, позволяет его правильно читать. У вас есть текстовый файл с разделителями, который имеет суффикс .xls.

Следует отметить, что суффикс файла не является гарантией того, что файл имеет обозначенный формат. Гораздо лучшие индикаторы используют команду оболочки file (если эта команда доступна в вашей операционной системе). Расширения файлов иногда используются графическими интерфейсами, чтобы определить, какое приложение использовать для открытия файла. Поскольку Excel способен считывать файл с разделителями табуляции (и поскольку Excel, по-видимому, не является стандартным приложением для файла .tsv, что будет более традиционным расширением файла), используя расширение .xls, файл будет (обычно) открывается Excel.

Таким образом, только потому, что имя файла заканчивается на .xls, это не значит, что он действительно является файлом собственного формата Excel.

+0

Это гораздо лучшее объяснение, чем то, что я мог бы дать в любом случае. :) Вы научили меня чему-то, хотя все, что я делал, это решить ближайшую проблему. –

Смежные вопросы