首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中使用openxlsx将excel中的列自动调整为多张工作表

如何在R中使用openxlsx将excel中的列自动调整为多张工作表
EN

Stack Overflow用户
提问于 2019-12-28 03:49:04
回答 1查看 1.1K关注 0票数 0

我有一个包含15张工作表的excel文档,我每月更新一次。目前,我一直在阅读文档,并按如下方式操作它

代码语言:javascript
运行
复制
sheetNames <- openxlsx::getSheetNames("myDoc.xlsx")
oldData <- lapply(sheetNames, function(x) openxlsx::readWorkbook("YouTube Search Results.xlsx", 
                                                                 sheet=x, skipEmptyRows = FALSE))
names(oldData) <- sheetNames

finalDF <- Map(bind_rows, oldData, newData)

openxlsx::write.xlsx(finalDF, "YouTube Search Results.xlsx", overwrite = TRUE)

这对我来说很有效,因为我能够根据list newData的元素更新每个工作表。

我的问题是我想要调整所有工作表上的所有列的大小。我目前不能这样做,因为我没有在oldData中创建工作簿对象,而setColWidths()需要一个工作簿对象。我是否必须更改读取数据的方式,或者是否有其他方法可以在不这样做的情况下设置列宽?

我已经看到了诸如R - Autofit Excel column width之类的响应,但它们没有提到对多个工作表执行此操作

EN

Stack Overflow用户

回答已采纳

发布于 2019-12-28 05:16:07

要完全控制输出格式,您需要创建一个工作簿对象。但是,对于基本格式,write.xlsx允许传递一些附加的格式参数,包括自动调整列宽以适应数据的宽度(有关详细信息,请参阅帮助)。您只需要在write.xlsx中添加colWidths="auto"。下面是一个改编代码的可重现的例子:

代码语言:javascript
运行
复制
library(openxlsx)
library(tidyverse)

# Create sample "old" and "new" Excel files
dl = list(mtcars=mtcars, iris=iris)
write.xlsx(dl, "myDoc.xlsx")
write.xlsx(dl, "YouTube Search Results.xlsx")

# Load old data add new data, and write to a new file
sheetNames <- getSheetNames("myDoc.xlsx")
oldData <- lapply(sheetNames, function(x) readWorkbook("YouTube Search Results.xlsx", 
                                                       sheet=x, skipEmptyRows = FALSE))
newData <- lapply(sheetNames, function(x) readWorkbook("myDoc.xlsx", 
                                                       sheet=x, skipEmptyRows = FALSE))
finalDF <- Map(bind_rows, oldData, newData)

write.xlsx(finalDF, "YouTube Search Results Updated.xlsx", colWidths="auto")
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59505432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档