如何在 R 中使用 XLConnect 读取 .xlsx 文件并另存为 .xls?

问题描述 投票:0回答:1

我遇到了这篇文章中讨论的问题,其中 XLConnect 包在写入文件时不断损坏文件。

另存为

.xls
的解决方案有效! (万岁!!!)但是,我的 R 代码工作流程取决于读取保存为
.xlsx
.

的 excel 模板文件。

根据 XLConnect saveWorkbook 函数的文档,“请注意,由于 Apache POI 目前缺少功能,工作簿只能以相同的文件格式保存 - 即,如果工作簿基础文件格式为 xls,则 file 参数只能指定另一个 xls 文件。”

R 中是否有替代包/函数,我可以在其中将

.xlsx
工作簿加载到 R 中,然后将结果保存为
.xls

r excel export-to-excel xls file-conversion
1个回答
-1
投票

我使用包

xlsx
它很简单,允许你像这样写:

write.xlsx(df_name, 'fileName.xlsx', sheetName = "Sheet-One") 

美妙的事情是您可以返回并将其他工作表附加到笔记本中,如下所示:

 write.xlsx(df_name, 'fileName.xlsx', sheetName = "Sheet-Two", append = TRUE)

使用此方法,损坏文件的问题要少得多,只要您将

data.frame()
的 tibble 传递给该方法,原始数据来自哪里并不重要!

编辑:我注意到您正在寻找读取 xlsx 并写入 xls。

你仍然可以使用这个包然后你当前的包来编写

xlsx::read.xlsx("your.xlsx")

它具有所有这些参数,您可以使用它来获得所需的粒度:

read.xlsx(
file,
sheetIndex,
sheetName = NULL,
rowIndex = NULL,
startRow = NULL,
endRow = NULL,
colIndex = NULL,
as.data.frame = TRUE,
header = TRUE,
colClasses = NA,
keepFormulas = FALSE,
encoding = "unknown",
password = NULL
)

因为您将使用一个包进行读取并使用另一个包进行写入,所以我会使用双冒号来调用数据,而不是加载这两个包,因为我猜测它们都使用 Java (JARS) 并且可能有一些共同点,如果两者都加载会导致冲突。以这种方式读取数据可以减少 RAM 的负担,根据需要获取数据,并允许您使用

XLConnect

的所有功能来制作输出
© www.soinside.com 2019 - 2024. All rights reserved.