有没有一种方法可以将格式化表格从R加速到excel?

时间:2019-07-18 06:59:54

标签: r excel openxlsx

我有一个174603行和178列数据框,我正在使用openxlsx :: saveWorkbook将其导入到Excel中(使用此包获得上述单元格的格式,包括颜色,标题样式等)。但是该过程非常缓慢(取决于机器使用的内存量,它可能需要7到17分钟!!),并且我需要一种方法来显着减少这种情况(不需要花费几秒钟,但是可以用下面的方法5分钟就可以了)

我已经搜索了其他问题,但是它们似乎都集中在导出到R(我对此没有问题)或将未格式化的文件写入R(使用write.csv和其他类似选项)< / p>

显然,由于计算机(工业计算机,请检查This question上的注释)上的设置,我无法使用xlsx软件包

任何有关软件包或该软件包中其他功能的建议都可以使运行速度更快。

2 个答案:

答案 0 :(得分:3)

这个问题有一段时间,但是我和您有同样的问题,并提出了值得一提的解决方案。 有一个名为 writexl 的软件包,该软件包已实现了使用 C libxlsxwriter 将数据框导出到Excel的方法。您可以使用以下代码导出到excel:

library(writexl)
writexl::write_xlsx(df, "Excel.xlsx",format_headers = TRUE)

参数 format_headers 仅适用于居中和粗体标题,但是我已经在ropnsci制作的github writexl library中编辑了其源代码的C代码。 您可以下载或克隆它。在 src 文件夹中,您可以编辑 write_xlsx.c 文件。

例如在他要插入标题格式的部分

//如何格式化标题(粗体+中心)

lxw_format *标题= workbook_add_format(workbook);

format_set_bold(title);

format_set_align(title,LXW_ALIGN_CENTER);

您可以添加此行以为标题添加背景色

format_set_pattern(标题,LXW_PATTERN_SOLID);

format_set_bg_color(title,0x8DC4E4);

您可以在 libxlsxwriter 库中进行搜索的格式很多

完成该文件的编辑后,如果源代码位于名为 writexl 的文件夹中,则可以通过以下方式构建和安装编辑后的软件包:

shell("R CMD build writexl")
install.packages("writexl_1.2.tar.gz", repos = NULL)

使用第一段代码再次导出将生成具有格式的Excel,并且比我所知道的任何其他库都要快。

希望这会有所帮助。

答案 1 :(得分:-1)

您尝试过吗?

write.table(GroupsAlldata, file = 'Groupsalldata.txt')

以便以txt格式获取它。
然后在Excel上,您可以简单地将“文本到列”转移到表格中 祝你好运