2016-10-27 27 views
2

openxlsx(またはxlsxまたは他のパッケージ)パッケージを使用して、データフレームをスプレッドシートにエクスポートしようとしています。 Excelには遺伝子名を自動的にフォーマットする傾向があるので(つまり、SEPT16 -> 16-Sep(日付形式))、特定の列を「一般」ではなく「テキスト」に設定したいという問題があります。R:openxlsxを使用してデータを「テキスト」としてエクスポート

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

答えて

1

openxlsxテキストの書式設定を可能とするが、それは手順のカップルを必要としない:それ

  • の作成のために(シート)をwbワークブック・オブジェクトを作成し、タブを作成

    • 使用するセルの書式設定(セルスタイル)を使用します。テキストフォーマットの場合: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") 
      
      を各セルスタイルのためのセル範囲を特定し、それらに

    をセルスタイルを割り当てます

  • 関連する問題