我使用gdata
包中的read.xls()
來讀取其中每個工作簿都有一個工作表的Excel工作簿。讀取失敗,出現以下錯誤。gdata包中的read.xls()失敗,輸入中沒有可用的行
> read.xls(list.files[[1]])
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
no lines available in input
我找不出錯誤。 sheetCount()
返回以下錯誤。
> sheetCount(list.files[[1]])
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line 161 did not have 13 elements
但是,這很奇怪,因爲工作簿有27列。對於第161 +/- 1列或第13 +/- 1列來說,沒有什麼不尋常的。
在整個工作簿中,重複條目都是空白的,您需要手動將它們向下延伸(這對於我想閱讀的750多本工作簿來說是不切實際的)。
我試着手動設置quote=''
和quote='\''
,但是這些不會改變輸出。 read.xls()
我的問題是看到一些行是衣衫襤褸但不是其他人?任何指針? (我嘗試了xlsReadWrite
包,但我在64位Win 7上,它只能在32位系統上運行)。
謝謝!
更新
我跟着@G。格洛騰迪克的建議,並得到以下。
> k <- count.fields(xls2csv(list.xls[[1]]), sep = ","); k
NULL
> L <- readLines(xls2csv(list.xls[[1]])); L
character(0)
即xls2csv()
產生是空的臨時文件,所以現在我無法弄清楚,爲什麼我的countSheets()
調用返回的「161行,13列」錯誤。
我也遵循@Joran的建議,並將.xls文件轉換爲Libre Office中的.csv文件,它可以很好地轉換和讀取(即,它在所有236行和邏輯readLines()
輸出中統計27個字段)。
更新2
我要補充一點,我覺得這些.xls文件是不會用Excel生成(我的源是關於其起源有點遮遮掩掩),但我不當我在Libre Office中打開它們時,會收到任何錯誤或警告。
不可能告訴沒有xls文件。我將在未來看到一些高質量的時間尋找隱藏在xls文件某處的不尋常字符。第一步可能是將一個導出爲csv,然後嘗試將其讀入R,或者在文本編輯器中將其打開,並以可視方式掃描它以尋找任何不尋常的東西。 – joran
@joran - 感謝指針!我將.xls轉換爲Libre Office中的.csv文件,轉換過程可以通過'read.csv()'讀取並獲取所有行和列的邏輯條目。我可能會手動將所有.xls轉換爲.csv :(。 –