csv 用R定义Excel的列宽

50pmv0ei  于 2023-09-28  发布在  其他
关注(0)|答案(4)|浏览(76)

最终产品是一个Excel CSV电子表格,其中有超过250列。我想知道是否有一种方法可以从R确定Excel中的列宽?
我使用的是write.csv2,它在excel中产生的列宽都等于8,43。
write.csv2(df,na =“",file=“Final.csv”)
如果可能的话,我正在寻找一个技巧,改变他们所有的一次或只具体的。running VBA from R是我唯一的选择吗?
谢谢您的帮助!

g6baxovj

g6baxovj1#

请检查包裹xlsx。我用它来生成excel文件,它相当不错。有一个方法 setColumnWidth 可以帮助你。查看here以获得有关xlsx包功能的更详细示例。
下面是一个使用xlsx包的工作示例。

df <- data.frame(matrix(rnorm(100),nc=10))
library(xlsx)
# must save as an xls or xlsx file...
write.xlsx(df,"Final.xlsx", row.names=FALSE)
# load it back
wb <- loadWorkbook("Final.xlsx")
sheets <- getSheets(wb)
# set widths to 20
setColumnWidth(sheets[[1]], colIndex=1:ncol(df), colWidth=20)
saveWorkbook(wb,"Final.xlsx")
# autosize column widths
autoSizeColumn(sheets[[1]], colIndex=1:ncol(df))
saveWorkbook(wb,"Final.xlsx")
ilmyapht

ilmyapht2#

对公认答案的一个小改进:编写一个文件只是为了再次读取和修改它不是很优雅。此外,我有过用saveWorkbook覆盖xls文件可能会导致“损坏”文件(即Excel将需要在打开文件时修复该文件)。
为了避免这种情况,可以如下进行:

df <- data.frame(matrix(rnorm(100), nc=10))
library(xlsx)
wb <- createWorkbook(type = "xlsx")
sheet <- createSheet(wb, sheetName = "rnormdata")
addDataFrame(df, sheet, row.names = FALSE)
setColumnWidth(sheet, colIndex = 1:3, colWidth = 20)
autoSizeColumn(sheet, colIndex = 4:ncol(df))
saveWorkbook(wb, "Final.xlsx")
cnwbcb6i

cnwbcb6i3#

您可以在使用openxlsx写入文件时定义列宽:

library(openxlsx)
openxlsx::write.xlsx(df, "C:/myfile.xlsx", sheetName = "Nice Sheet", rowNames = F, colWidths=30)
rkttyhzu

rkttyhzu4#

您可以为数据集的每一列设置特定的宽度:

for(c in 1:ncol(yourData)){
setColumnWidth(sheetIndex,colIndex=c,colWidth=max(nchar(c(names(yourData[c],yourData[,c])))))
}

相关问题