【问题标题】:get a line break / new line in excel file with r xlsx使用 r xlsx 在 excel 文件中获取换行符/换行符
【发布时间】:2018-04-05 00:11:13
【问题描述】:

我想在我的 excel 结果中获得一个新行,例如我可以通过进入单元格并按 Alt+Enter

数据+代码

df <- data.frame(a="Funny\\nNot",b="rofl\nlol",c="hihi\rh3h3")

xlsx::write.xlsx(df,file = "df.xlsx")

【问题讨论】:

  • 将列设置为wrap text\n 应该可以,不是吗?

标签: r excel newline xlsx line-breaks


【解决方案1】:

使用包xlsx:

a 列中删除转义'\'

df <- data.frame(a="Funny\nNot",b="rofl\nlol",c="hihi\rh3h3")

library(xlsx)

创建工作簿和工作表对象:

wb <- createWorkbook() 
sheet <- createSheet(wb, sheetName="sheet1")

添加数据框:

addDataFrame(df, sheet)

从 wb/sheet 中获取第 2 行 B 列:

rows <- getRows(sheet, rowIndex = 2)

cell_b_2 <- getCells(rows, colIndex = 2)[[1]]

创建一个在 Excel 中设置 Wrap TextCellStyle

cs <- CellStyle(wb, alignment = Alignment(wrapText = TRUE))

将其应用于单元格:

setCellStyle(cell_b_2, cs) 

保存工作簿:

saveWorkbook(wb, 'df.xlsx')

生成的工作簿如下所示:

【讨论】:

    【解决方案2】:

    感谢@lukeA 放弃名字。

    当我将wrap text 用于包含"\n" 的单元格时。我得到了想要的结果。

    这是我使用的代码:

    wb <- xlsx::loadWorkbook("df.xlsx")
    sheets <- xlsx::getSheets(wb)
    sheet  <- sheets[[1]]                  # get specific sheet
    rows   <- xlsx::getRows(sheet)         # get rows
    cells  <- xlsx::getCells(rows)         # get cells
    values <- lapply(cells, xlsx::getCellValue) # extract the cell values
    
    
    wrapStyle <- xlsx::CellStyle(wb) + xlsx::Alignment(horizontal=NULL, vertical=NULL, wrapText=T,
                                  rotation=0, indent=0)
    
    lapply(names(cells),function(c)if(values[[c]] %>% grepl("\\n",.))xlsx::setCellStyle(cells[[c]],wrapStyle))
    
    xlsx::saveWorkbook(wb,"dfWrap.xlsx")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多