次のデータフレームのデータを用いて説明する。
d1 <- data.frame(name = c('太郎', '花子'), age = c(18, 19))
d1
## name age
## 1 太郎 18
## 2 花子 19
「asTable = TRUE」のオプションを付けるとExcelの表形式フォーマットを
適用することができる。表スタイルの設定は「tableStyle」オプションで行う。
設定可能な表スタイルの一覧は最後にある【付録】の章を参照のこと。
library(openxlsx)
wb <- buildWorkbook(d1, asTable = TRUE, tableStyle = 'TableStyleLight8')
【注意】
「Sheet 1」と言う名称でワークシートが作成される。
openxlsxパッケージライブラリの仕様でSheetと1の間に半角スペースが入る。
「saveWorkbook」関数で編集したワークブックRオブジェクト(wb)を保存する。
# 新規作成するExcelファイル(ワークブック)のファイルパス
FILE <- 'd1.xlsx'
saveWorkbook(wb, file = FILE, overwrite = TRUE)
次のようなExcelファイル(ワークブック)が作成される。 なお,ファイルが開かれていると「Permission denied」エラーが出て作成できない。
「openXL」関数でExcelファイル(ワークブック)を コマンドラインから開くことができる。
#openXL(FILE)
「loadWorkbook」関数を使って既存のExcelファイル(ワークブック) をRワークブックオブジェクトとしてロードし, 「addWorksheet」関数でワークシートを追加する。
wb <- loadWorkbook(FILE)
addWorksheet(wb, sheetName = 'Sheet 2')
「writeDate」関数でワークシートに,
Rオブジェクト(data.frame/matrix)の内容を書き込む。
なお,表形式フォーマットを利用したい場合は,「writeDataTable」を利用する。
x <- 1:3 # 数列ベクトル
writeData(wb, sheet = 'Sheet 2', x = x)
# 数式を追加する場合
writeFormula(wb, sheet = 'Sheet 2',
x = "SUM(A1:A3)",
startRow = 4,
startCol = 1)
saveWorkbook(wb, file = FILE, overwrite = TRUE)
次のようにExcelファイル(ワークブック)に新しいワークシート「Sheet 2」 が追加される。
「read.xlsx」関数でワークシートのテーブルをRのdata.frameに 読み込むことができる。
# Excelファイルに含まれるシート名を表示
getSheetNames(FILE)
## [1] "Sheet 1" "Sheet 2"
ws1 <- read.xlsx(FILE, sheet = 'Sheet 1')
ws1
## name age
## 1 太郎 18
## 2 花子 19
ws2 <- read.xlsx(FILE, sheet = 2) # シート番号でも指定できる。
ws2
## 1
## 1 2
## 2 3
格子線なし(gridLines = FALSE)でワークシートを追加し、 printされた画像を「insertPlot」関数で挿入する。
【注意】 原因不明だが、表挿入したシートに画像は追記できない。逆順の場合は可能。
addWorksheet(wb, sheetName = 'Sheet 3', gridLines = FALSE)
p1 <- barplot(height = d1$age, names.arg = d1$name)
print(p1)
## [,1]
## [1,] 0.7
## [2,] 1.9
insertPlot(wb, sheet = 'Sheet 3',
width = 10, height = 10,
units = "cm")
writeDataTable(wb, sheet = 'Sheet 3', x = d1,
tableStyle = 'TableStyleLight8', startCol = 6)
saveWorkbook(wb, file = FILE, overwrite = TRUE)
openXL(FILE)
Excel表フォーマットスタイル一覧については, 次のコードにより生成されるExcelファイル「tableStylesGallery.xlsx」を参照のこと。
xlsx <- createWorkbook(paste0("tableStylesGallery.xlsx"))
addWorksheet(xlsx, "Style Samples")
for (i in 1:21)
{
writeDataTable(xlsx, tableStyle = paste0("TableStyleLight", i),
startRow = 1, startCol = i * 3 - 2, sheet = 1,
x = data.frame(Style = paste0("TableStyleLight", i)))
}
for (i in 1:28)
{
writeDataTable(xlsx, tableStyle = paste0("TableStyleMedium", i),
startRow = 4, startCol = i * 3 - 2, sheet = 1,
x = data.frame(Style = paste0("TableStyleMedium", i)))
}
for (i in 1:11)
{
writeDataTable(xlsx, tableStyle = paste0("TableStyleDark", i),
startRow = 7, startCol = i * 3 - 2, sheet = 1,
x = data.frame(Style = paste0("TableStyleDark", i)))
}
saveWorkbook(xlsx, file = paste0("tableStylesGallery.xlsx"),
overwrite = TRUE)
次のデータを読込みヒストグラムを作成し, グラフをExcelワークシート上に表示させよ。
library(DT)
d <- read.csv('https://stats.dip.jp/01_ds/data/heights100.csv')
datatable(d)