使用R定义Excel的列宽

最终产品是Excel CSV电子表格,其中有超过250列。 我想知道是否有一种方法来确定R的Excel中的列宽?

我正在使用write.csv2,它在excel中产生的列宽都等于8,43。

write.csv2(df,na =“”,file =“Final.csv”)

如果可能的话,我正在寻找一种方法来一次性改变它们或者只改变它们。 从R运行VBA我唯一的select?

感谢您的帮助!

请检查包xlsx 。 我使用它来生成Excel文件,它很不错。 有一个方法setColumnWidth可以帮助你。 在这里查看关于xlsx包function的更详细的例子。


所以这里是一个使用包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") 

对接受的答案有一点小小的改进:只是为了读取和修改文件而编写一个文件并不是很优雅。 此外,我有经验,用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")