如何使用R和XLConnect保存XLSX电子表格而不将文本包装到单元格中?

R中的XLConnect库允许读取和写入Microsoft Excel XLSX电子表格文件。

但是,使用writeWorksheet()或writeWorksheetToFile()时,会自动将文本包装在所有单元格中。 如何closures文字换行? 理想情况下,我正在寻找生成没有包装文本和每列最佳宽度的XLSX电子表格。

谢谢!

这是一个基于XLConnec函数,可以将一个.xlsx文件保存到磁盘而不用文字换行。 最后,其中一种风格select是自动resize。 我怀疑还有其他select,明确或隐含地停止文本包装。

 save.xls <- function(df, filename, sheetname="Sheet", create=TRUE, rownames=NULL, startRow=1, zebra=F) { require(XLConnect) require(stringr) if (is.matrix(df)) df <- as.data.frame(df) if (!str_detect(filename, "\\.xlsx$")) filename <- str_c(filename, ".xlsx") wb <- loadWorkbook(filename, create=create) if (existsSheet(wb, sheetname)) warning(sprintf("Sheet %s already existed and was overwritten", sheetname)) createSheet(wb, name=sheetname) if (!is.null(rownames)) df <- transform(df, rownames = row.names(df)) writeWorksheet(wb, df, startRow=startRow, sheet=sheetname, rownames=rownames) if (zebra) { color <- createCellStyle(wb) setFillForegroundColor(color, color = XLC$"COLOR.LIGHT_CORNFLOWER_BLUE") setFillPattern(color, fill = XLC$FILL.SOLID_FOREGROUND) for (i in 1:ncol(df)) { setCellStyle(wb, sheet = sheetname, row = seq(startRow+1, nrow(df)+2, 2), col = i, cellstyle = color) } #prcntg <- createCellStyle(wb) see my script of XLConnect.R for how it worked #dollar <- createCellStyle(wb) #setDataFormat(prcntg, format = "0.0") #setDataFormat(dollar, format = "$ 0.00") border <- createCellStyle(wb) setBorder(border, side = c("bottom","top"), type = XLC$"BORDER.THICK", color = XLC$"COLOR.RED") setCellStyle(wb, sheet = "Sheet", row = startRow, col = 1:ncol(df), cellstyle = border) setColumnWidth(wb, sheet = "Sheet", column = 1:ncol(df), width = -1) # this autosizes each column } saveWorkbook(wb) } 

通过切换到xlsx包来解决这个问题,它也有更好的语法。