使用xlsx包将数据从R插入到Excel的问题

mar*_*bel 5 excel r xlsx rjava

我正在尝试从R创建一个新的excel工作簿,以使用xlsx包保存一些小数据集.由于某种原因,它工作正常,但我不能再做了.

用于创建新工作簿的代码

library("xlsx")
library("xlsxjars")
library("rJava")

file <- "marca_imei.xlsx"
wb <- loadWorkbook(file)

# The error:
# Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
#  java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
Run Code Online (Sandbox Code Playgroud)

我搜索了一个答案,但是从excel导入数据时似乎有人犯了同样的错误.我尝试过推荐但不起作用.以下是未来搜索者的一些链接:

sessionInfo():

locale:
[1] LC_COLLATE=Spanish_Spain.1252  LC_CTYPE=Spanish_Spain.1252    LC_MONETARY=Spanish_Spain.1252
[4] LC_NUMERIC=C                   LC_TIME=Spanish_Spain.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] xlsx_0.5.5             xlsxjars_0.6.0         RJDBC_0.2-3            rJava_0.9-6           
 [5] DBI_0.2-7              slidifyLibraries_0.3.1 slidify_0.4            knitr_1.5             
 [9] devtools_1.4.1         scales_0.2.3           ggplot2_0.9.3.1        data.table_1.8.11     
[13] reshape2_1.2.2        

loaded via a namespace (and not attached):
 [1] colorspace_1.2-4   dichromat_2.0-0    digest_0.6.4       evaluate_0.5.1     formatR_0.10      
 [6] grid_3.0.2         gtable_0.1.2       httr_0.2           labeling_0.2       markdown_0.6.3    
[11] MASS_7.3-29        memoise_0.1        munsell_0.4.2      parallel_3.0.2     plyr_1.8          
[16] proto_0.3-10       RColorBrewer_1.0-5 RCurl_1.95-4.1     stringr_0.6.2      tools_3.0.2       
[21] whisker_0.3-2      yaml_2.1.10     
Run Code Online (Sandbox Code Playgroud)

law*_*yeR 0

问题可能出在 Java,而不是 XLConnect。通过在 Java 站点上进行测试来确保您已安装 Java——它将确认 Java 已正确安装。然后确保 R 知道找到 jre.dll 的路径或类似文件名的文件名,这对于什么是至关重要的。

其次,这是我已经使用一年的代码,没有收到您收到的错误消息。如果对你有帮助的话......

read.xls <- function(filename, sheetnumber=1, sheetname=NULL, forceConversion=TRUE, startCol=0,  stringsAsFactors=TRUE) {
wb <- loadWorkbook(filename)
if (is.null(sheetname)) sheetname = getSheets(wb)[sheetnumber]
df <- readWorksheet(wb, sheet=sheetname, forceConversion=forceConversion, startCol=startCol)
if (stringsAsFactors) {
ischar <- sapply(df, class) == "character"
for (i in 1:length(df)) {
if (ischar[i]) df[,i] <- factor(df[,i])
}
}
df
}
Run Code Online (Sandbox Code Playgroud)