R:使用openxlsx将数据导出为“文本”
我正在尝试使用openxlsx
(或xlsx
或其他软件包)来导出dataframe来优化电子表格。 我有一个问题是我想设置某些SEPT16 -> 16-Sep
“文本”,而不是“一般”,因为Excel有自动格式化基因名称(即SEPT16 -> 16-Sep
(date格式))的趋势。
openxlsx
文档提供了一些设置列类为“货币”,“会计”,“超链接”,“百分比”或“科学”,但不是明确的“文本”的例子。 我已经尝试将类设置为“文本”或“字符”,但输出Excel列仍然是“一般”。 最初,正确的文本在那里,但如果我在单元格中编辑任何东西,Excel会自动格式化这些单元格。
library(openxlsx) df <- data.frame(gene = c("SEPT16", "MARCH10", "GATA4"), pvalue = c(0.0123, 0.2315, 0.00001), stringsAsFactors = FALSE) class(df$gene) <- "text" # Doesn't work class(df$pvalue) <- "scientific" wb <- openxlsx::createWorkbook() sheet <- openxlsx::addWorksheet(wb, "test") openxlsx::writeDataTable(wb = wb, sheet = "test", x = df) openxlsx::saveWorkbook(wb, "example_table.xlsx")
openxlsx
确实允许文本格式化,但是它需要几个步骤:
- 创build工作簿对象
wb
并为其创build一个选项卡(工作表 ) - 创build您希望使用的单元格格式( 单元格样式 )。 对于文本格式:使用numFmt ='@' 。
- 将一些数据分配( 写入 )工作簿对象
wb
中的工作表 - 确定每个单元格样式的单元格区域,并为其分配单元格样式
示例代码
# Create workbook & sheet: wb <- openxlsx::createWorkbook() sheet <- openxlsx::addWorksheet(wb, "test") # Create the cell style textstyle <- openxlsx::createStyle(fontName = "Arial", fontSize = 7, numFmt = "@") # Assign df to workbook openxlsx::writeDataTable(wb = wb, sheet = "test", x = df) # First identify the range of the 'text cells': textcells <- expand.grid(row = c(1,3,5), col = c(1,2,3,4,5)) # Then assign 'textstyle' to the 'textcells-range': openxlsx::addStyle(wb = wb, sheet = "test", rows = textcells$row, cols = textcells$col, style = textstyle) # Save the workbook openxlsx::saveWorkbook(wb, "example_table.xlsx")