簡體   English   中英

在 R 中讀取 XLSX 文件時出錯

[英]Error reading XLSX file in R

我正在嘗試使用以下行讀取存儲在網絡驅動器上的 1 MB XLSX 文件

options(java.parameters="-Xmx4g")
library(rJava) 
library(xlsx) 
jgc <- function() {
  gc()
  .jcall("java/lang/System", method = "gc")
}    
jgc()
folder <- 'network_drive/State_Stuff/'  
state <- 'MI'
xlsx_in<- read.xlsx2(paste(folder, state,"_data.xlsx", sep = ""),
                  sheetName = "sheet1",
                  colClasses = c(rep("numeric",8), "character"))

我收到以下錯誤。

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException

我正在運行 Windows7 64 位 RStudio,並運行java -version返回

java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

我試過將文件從網絡驅動器復制/粘貼到我的桌面上並讀取它,但這會引發相同的錯誤。

但是,將文件移動到我的桌面,並使用另存為,並將其另存為新文件,這樣我就可以很好地閱讀它了。

有沒有人知道這里發生了什么?

嘗試使用readxl包。 它不依賴於java。

例如:

library(readxl) 

folder <- 'network_drive/State_Stuff/'  
state <- 'MI'
xlsx_in<- read_excel(paste(folder, state,"_data.xlsx"),
                  sheet = "sheet1",
                  col_types = c(rep("numeric",8), "text"))

我今天從同事那里收到的文件遇到了同樣的問題,並在尋找解決方案時遇到了這篇文章。 切換到不同的庫並不是真正的解決方案,如果你習慣了 xlsx,readxl 會有意想不到的行為。

我能夠通過在 Excel 中打開文件並重新保存來解決該問題。 不確定問題是由特定版本的 Excel 還是其他任何東西產生的。 我可以很好地讀取來自同一位同事的類似文件。

使用 gc() (垃圾收集)並且它有效。

https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/gc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM