Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在openxlsx中合并工作簿_R_Excel_Openxlsx - Fatal编程技术网

R 如何在openxlsx中合并工作簿

R 如何在openxlsx中合并工作簿,r,excel,openxlsx,R,Excel,Openxlsx,我有几个非常特别格式化的xlsx文件,如果我将这些文件作为数据帧加载,那么复制这些文件的格式将非常困难。例如,同一列中的数据为字符和数字。我需要将这些工作簿合并成一个,其中每个文件都是一个选项卡 如果我加载这些工作簿,我可以看到结构和样式。但似乎没有办法将多个工作簿对象写入一个文件。我看到一些人提到使用getStyles()和addStyles()/replaceStyles(),但没有具体的例子 非常感谢您在合并工作簿或复制整个工作表的样式方面提供的任何帮助 fls <- c('/som

我有几个非常特别格式化的xlsx文件,如果我将这些文件作为数据帧加载,那么复制这些文件的格式将非常困难。例如,同一列中的数据为字符和数字。我需要将这些工作簿合并成一个,其中每个文件都是一个选项卡

如果我加载这些工作簿,我可以看到结构和样式。但似乎没有办法将多个工作簿对象写入一个文件。我看到一些人提到使用
getStyles()
addStyles()
/
replaceStyles()
,但没有具体的例子

非常感谢您在合并工作簿或复制整个工作表的样式方面提供的任何帮助

fls <- c('/someplace/file1.xlsx','/someplace/file1.xlsx','/someplace/file1.xlsx')

wbs <- lapply(fls,function(x) openxlsx::loadWorkbook(x))

wb <- createWorkbook()

addWorksheet(wb, "test1") 

writeData(wb, sheet = 'test1', wbs[[1]]$worksheets[[1]], rowNames = TRUE)

fls对于此任务,在您的正常工作流程中,您是使用
openxlsx
创建
xlsx
文件,还是只能将其加载到R中(如示例所示)?它们通过loadWorkbook()加载到R中。如果我可以在Windows中执行此操作,那么创建COM对象会更容易一些,但在我的情况下这是不可能的。openxlsx的ClonewWorksheet似乎也可以工作,但根据其他用户的评论,它目前只在同一个工作簿中工作。我想我可能会将所有单元格格式刮取,将.xlsx()读入一个数据框,然后将格式逐单元格应用到数据框,以便逐个文件写入新工作簿。嗯,我对相同的目标感兴趣。但我的解决方案是使用openxlsx创建所有excel选项卡,并将它们分配到同一工作簿。我认为也可以在Excel中使用VBA来合并目录中的所有xlsx文件。VBA绝对是一个选项,但在R的LInux部署中不是。至少在我的经验中是这样。我也用python中的win32com实现了这一点,但这同样需要Windows。openxlsx repo中有几个打开的线程,其中一个是对cloneWorksheet()的更改,看起来很有希望,但尚未提交任何内容。对于此任务,在您的正常工作流中,您是使用
openxlsx
创建
xlsx
文件,还是必须只将其加载到R中(如示例所示)?它们通过loadWorkbook()加载到R中。如果我可以在Windows中执行此操作,那么创建COM对象会更容易一些,但在我的情况下这是不可能的。openxlsx的ClonewWorksheet似乎也可以工作,但根据其他用户的评论,它目前只在同一个工作簿中工作。我想我可能会将所有单元格格式刮取,将.xlsx()读入一个数据框,然后将格式逐单元格应用到数据框,以便逐个文件写入新工作簿。嗯,我对相同的目标感兴趣。但我的解决方案是使用openxlsx创建所有excel选项卡,并将它们分配到同一工作簿。我认为也可以在Excel中使用VBA来合并目录中的所有xlsx文件。VBA绝对是一个选项,但在R的LInux部署中不是。至少在我的经验中是这样。我也用python中的win32com实现了这一点,但这同样需要Windows。关于这一点,openxlsx repo中有几个打开的线程,其中一个是对cloneWorksheet()的更改,看起来很有希望,但尚未提交任何内容。