3

これらは、他のスレッドの回答にコメントできないため、ここで新しいスレッドに書いているフォーマットを維持しながら、R から Excel のテンプレートに書き込むための 2 つの関連するフォローアップの質問です。

  1. 実際、Joris Meys の回答/コード (6 月 27 日) は機能しません。すでに数回試しました。

    繰り返しますが、目的は、テンプレートファイルのフォーマットを使用するか、単に保存しながら、RでExcelファイルを作成することです。回答では、XLConnect と xlsx という 2 つの異なるツールについて言及されていました。

    Joris Meys の回答は XLConnect に基づいています。しかし、まったく同じコードを使用すると、新しいコンテンツで満たされたセルが白くなり、書式が保持されなくなります。他のすべてのセル (新しいコンテンツが挿入されていないセル) は、以前のスタイルを実際に引き継ぎます。

    WinXP で最新の RGui (32 ビット) V. 2.15.1 と XLConnect と xlsx の最新バージョンを使用しています (また、R の他のすべてのパッケージが最新であることも確認しました)。

  2. それに関連する 2 番目の質問: スレッドでは、代わりに xlsx について言及しています。この情報も私には間違っているようです。ウェブサイトを確認したところ、開発者はその解決策に取り組んでいるようです。現在、次のように、xlsx で書式設定を手動でコードに書き込む可能性しかありません。

    cs2 <- CellStyle(wb) +    
      Font(wb, name="Courier New", isBold=TRUE) +   # add a Font
      Borders(col="blue", position=c("TOP", "BOTTOM"), pen="BORDER_THICK") +  # add borders    
      Alignment(h="ALIGN_RIGHT") 
    

    (ソース: http://code.google.com/p/rexcel/wiki/LowLevelAPI )

    Rでフォーマットを維持しながらExcelファイルを書く方法を誰かが提供できれば、本当にクールです.

編集:これはコードです(「aSheet」ではなく「Sheet1」の違いのみですが、他のバリアントも試しました。

require(XLConnect)
wb <- loadWorkbook("test.xlsx", create=TRUE)
setStyleAction(wb,XLC$"STYLE_ACTION.NONE")

Data <- data.frame(
  a = 1:10,
  b = letters[1:10]
)

writeWorksheet(wb,Data,"Sheet1",startRow=1,startCol=1,header=TRUE)

saveWorkbook(wb)
4

1 に答える 1

0

質問1:

セルをフォーマットするためのコード例:

library('xlsx')

# create the workbook 
wb <- createWorkbook()
sheet <- createSheet(wb, sheetName="addDataFrame1")
data <- data.frame(mon=month.abb[1:10], day=1:10, year=2000:2009,
                   date=seq(as.Date("1999-01-01"), by="1 year", length.out=10),
                   bool=c(TRUE, FALSE), log=log(1:10),
                   rnorm=10000*rnorm(10),
                   datetime=seq(as.POSIXct("2011-11-06 00:00:00", tz="GMT"), by="1 hour",
                                length.out=10))
cs1 <- CellStyle(wb) + Font(wb, isItalic=TRUE) # rowcolumns
cs2 <- CellStyle(wb) + Font(wb, color="blue")
cs3 <- CellStyle(wb) + Font(wb, isBold=TRUE) + Border() # header
addDataFrame(data, sheet, startRow=3, startColumn=2, colnamesStyle=cs3,
             rownamesStyle=cs1, colStyle=list('2'=cs2, '3'=cs2))

# save the workbook ...
saveWorkbook(wb, "test.xlsx")

出力ファイルを参照してください。

質問2:

cs2 <- CellStyle(wb) +    
  Font(wb, name="Courier New", isBold=TRUE) +   # add a Font
  Borders(col="blue", position=c("TOP", "BOTTOM"), pen="BORDER_THICK") +  # add borders    
  Alignment(h="ALIGN_RIGHT") 

スタイルで使用するパラメーターに変数を入れるだけです。

于 2013-08-29T13:12:11.747 に答える