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

如何使用R和XLConnect保存XLSX电子表格而不在单元格中包装文本?,r,excel,word-wrap,xlconnect,R,Excel,Word Wrap,Xlconnect,R中的XLConnect库允许读取和写入Microsoft Excel XLSX电子表格文件 但是,当使用writeWorksheet()或writeWorksheetToFile()时,它会自动将文本包装到所有单元格中如何关闭文本换行? 理想情况下,我希望生成XLSX电子表格,没有包装文本,并且每列的宽度最佳 谢谢 这是一个基于XLConnect的函数,它将.xlsx文件保存到磁盘,而无需文本包装。最后,样式选择之一是自动调整大小。我怀疑还有其他选择,显式或隐式地停止文本包装 save.xls

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

但是,当使用writeWorksheet()或writeWorksheetToFile()时,它会自动将文本包装到所有单元格中如何关闭文本换行? 理想情况下,我希望生成XLSX电子表格,没有包装文本,并且每列的宽度最佳


谢谢

这是一个基于
XLConnec
t的函数,它将.xlsx文件保存到磁盘,而无需文本包装。最后,样式选择之一是自动调整大小。我怀疑还有其他选择,显式或隐式地停止文本包装

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)
}

save.xls通过切换到xlsx软件包解决了这个问题,该软件包也有更好的语法