gpt4 book ai didi

r - openxlsx:将相同的样式复制到添加到工作表的新列

转载 作者:行者123 更新时间:2023-12-03 08:11:14 27 4
gpt4 key购买 nike

我正在使用 openxlsx 包,并在工作簿对象中克隆工作表。然后,我将新数据添加到这个克隆的工作表中。

如何将与此工作表上当前存在的相同样式应用于此添加的数据?

例如假设旧工作表由第 1:3 列中的数据组成,格式为百分比,有一些下划线、粗体、字体大小等。我现在只想确保将第 3 列中的相同格式/样式应用于第 4 列(这是我添加新数据的地方)。

我在 openxlsx 中找到了 getStylecreatStylereplaceStyle 函数,但没有看到任何获取和应用特定样式的选项(因为 getStyle 返回一个列表,但它不告诉哪个列表元素属于哪个工作表或列)。

我当前的工作流程(尽管可能不相关/有帮助):

old_wb <- loadWorkbook(file.choose())

new_wb <- old_wb
cloneWorksheet(new_wb, "new", "old worksheet")
writeData(new_wb,
sheet = "new",
x = c(1:3),
startRow = 3,
startCol = 4)

saveWorkbook(new_wb, file = "test.xlsx", overwrite = TRUE)

最佳答案

您可以使用此函数,它结合了 openxlsxtidyxl 软件包的功能。它将为您提供与给定 Excel 中所有单元格关联的样式对象,以及所有其他内容,如数字、字符和公式。然后,您可以直接将样式应用到其他单元格或不同的工作簿中。

read_excel_template <- function(excel_path) {
cells <- tidyxl::xlsx_cells(excel_path)
template <- openxlsx::loadWorkbook(excel_path)

map_df(.x = enframe(template$styleObjects)$value,
.f = ~ tibble(
style = c(.x$style),
sheet = .x$sheet,
row = .x$rows,
col = .x$cols
)) %>%
full_join(cells, by=c("sheet", "row", "col")) %>%
relocate(style, .after = address)
}

关于r - openxlsx:将相同的样式复制到添加到工作表的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70754569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com