xlsxファイルの操作に便利な「openxlsx」パッケージをパイプコマンドだけでなく、チェインコマンドも利用可能に改良した「openxlsx2」パッケージの紹介です。
png画像を取り込み、ピクセルアートを作成する例も紹介します。エクセルやOpen Office Calcで編集可能なファイルの作成が可能です。
一気にコマンドの処理が可能となったので、思考の中断もなく大変便利になったと思います。そして、本パッケージを上手に利用するコツは「data.frame」などのデータと「Workbook」オブジェクトの使い分けを意識することかなと考えます。
また、シートへのデータ書き込みは、「そのまま」、「テーブル形式」、「ピポットテーブル形式」で可能なコマンドが収録されています。
パッケージバージョンは1.7。実行コマンドはR version 4.3.3で確認しています。
パッケージのインストールと読み込み
下記、コマンドを実行してください。
# パッケージのインストール
install.packages("openxlsx2")
# openxlsx2パッケージの読み込み
library("openxlsx2")
参考_パイプコマンドで処理
非常に簡潔に記述することが可能です。各コマンドは実行コマンドで紹介します。
# tidyverseパッケージの読み込み
# tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
### ワークブック作成から保存、そして確認まで
# ワークブックの作成
wb_workbook() %>%
# ワークシートを追加
wb_add_worksheet(sheet = "テスト") %>%
# ワークシートにデータを書き込む
wb_add_data(sheet = 1, x = iris, with_filter = TRUE) %>%
# ワークシートにテーブルでデータを書き込む
# ワークシート名でも指定が可能
wb_add_data_table(sheet = "テスト", x = iris, start_col = 7,
table_style = "TableStyleLight12") %>%
# ピボットテーブルを追加
wb_add_pivot_table(sheet = next_sheet(),
x = wb_data(., sheet = 1, dims = "G1:K151"),
dims = "A4",
filter = "Species",
rows = "Petal.Width",
data = "Petal.Length",
fun = "AVERAGE") %>%
# 確認
wb_open()
###
作成できるxlsxファイル
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
xlsxファイルの読み込み
xlsxファイルを読み込む「wb_to_df」コマンドの紹介です。
本コマンドでは単純にxlsxファイルからデータを取得するだけでなく、オプションの使用で「非表示列を除外」、「定義した名前のデータ」、「数式」、「セル結合部分を先頭値で埋める」などの条件のデータも取得可能です。これら条件データは「Rで編集後、元のエクセルファイルの体裁で保存」する場合に便利です。
また、xlsxファイルをWorkbookオブジェクトで読み込む場合は最下部の「wb_load」コマンドを使用します。
なお、コード中の「”Test_Xlsx.xlsx”」は仮のファイル名です。
#######################
### xlsxファイルの読み込み
#######################
### データフレームとして読み込む:wb_to_dfコマンド
# xlsxファイルを指定:fileオプション
## 行に関するオプション
# 読み込み開始行を指定:start_rowオプション
# 指定行の読み込み:rowsオプション
# 行名を表示:row_namesオプション;TRUE/FALSE
# 空白行の読み込み設定:skip_empty_rowsオプション;TRUE/FALSE
# 非表示行の読み込み設定:skip_hidden_rowsオプション;TRUE/FALSE
## 列に関するオプション
# 読み込み開始列を指定:start_colオプション
# 指定列の読み込み:colsオプション
# 列名を表示:col_namesオプション;TRUE/FALSE
# 空白列の読み込み設定:skip_empty_colsオプション;TRUE/FALSE
# 非表示列の読み込み設定:skip_hidden_colsオプション;TRUE/FALSE
## その他読み込みオプション
# 読み込むシートを指定:sheetオプション
# 日データの数値化:detect_datesオプション;TRUE/FALSE
# 文字型欠損値の指定:na.stringオプション;文字で指定
# 数字型欠損値の指定:na.numbersオプション;数字で指定
# セル結合データを指定:fill_merged_cellsオプション;TRUEで同じデータ
# 読み込み範囲を指定:dimsオプション
# 数式を取得:show_formulaオプション;TRUE/FALSE
# FALSEでデータをcharacter classで取得:convertオプション
# 列のデータ形式を指定:typesオプション;"列名" = 形式を以下数値で指定
# 0:character,1:numeric,2:date,3:datetime,4:logical;取得全データの指定が必要
# 定義した名前でデータを取得:named_regionオプション
# データの属性を取得する:keep_attributes;TRUE/FALSE
###
# 単純に読み込み
wb_to_df(file = "Test_Xlsx.xlsx")
# 定義した名前のデータを取得:named_regionオプション
wb_to_df(file = "Test_Xlsx.xlsx", named_region = "からだにいいもの")
# 数式を取得:show_formulaオプション
wb_to_df(file = "Test_Xlsx.xlsx", show_formula = TRUE)
# セル結合部分を先頭値で埋めるて取得:fill_merged_cellsオプション
wb_to_df(file = "Test_Xlsx.xlsx", fill_merged_cells = TRUE)
###
### xlsxファイルをWorkbookオブジェクトとして読み込む:wb_loadコマンド
# xlsxファイルを指定:fileオプション
# シートを指定:sheetオプション
wb_load(file = "Test_Xlsx.xlsx", data_only = FALSE)
xlsx形式の保存とOSで指定している対応ソフトウェアで直接確認
xlsxファイルで保存は2つのコマンドがあります。data.frameやlistを保存する「write_xlsx」コマンド、Workbookオブジェクトから保存する「wb_save」コマンドの紹介です。
エクセルやOpen Office Calcなどの対応ソフトウェアで直接確認する場合は「wb_open」コマンドです。
#######################
### xlsxファイルを出力:write_xlsxコマンド
#######################
# データを指定:xオプション
# 指定データはdata.frameだけでなくlistの指定が可能です
# 保存ファイル名を指定:fileオプション
##
write_xlsx(x = iris, file = "テスト.xlsx")
###
#######################
### Workbookオブジェクトをxlsxで保存:wb_saveコマンド
#######################
# ファイル名を指定:fileオプション
###
wb_save(wb = Test, file = "Test.xlsx")
###
#######################
### Workbookオブジェクトのプレビュー:wb_openコマンド
#######################
# Workbookオブジェクトを指定:xオプション
# ファイル名を指定:fileオプション
##
wb_open(wb = Test)
###
ワークブック、シートの情報を取得するコマンド
作成者、シートの名前、並び順、表示状態、選択状況や定義された名前の情報を取得するコマンドの紹介です。wbオプションには「wbWorkbook」オブジェクトを指定します。
#######################
### ワークブックやシートの情報を取得するコマンド
### wbオプションにはwbWorkbookオブジェクトを設定します
#######################
### ベースフォントを取得:wb_get_base_fontコマンド
wb_get_base_font(wb = wd_object)
###
### 作成者を取得:wb_get_creatorsコマンド
wb_get_creators(wb = wd_object)
###
### シート名を取得:wb_get_sheet_namesコマンド
wb_get_sheet_names(wb = wd_object)
###
### シートの並び順:wb_get_orderコマンド
wb_get_order(wb = wd_object)
###
### シートの表示状態:wb_get_sheet_visibilityコマンド
wb_get_sheet_visibility(wb = wd_object)
###
### シートの選択状況:wb_get_selectedコマンド
wb_get_selected(wb = wd_object)
###
### 定義された名前の情報を取得:wb_get_named_regionsコマンド
wb_get_named_regions(wb = wd_object)
###
### 定義された名前のを削除:wb_get_named_regionsコマンド
# シートを指定:sheetオプション
# 定義された名前を指定:nameオプション
wb_remove_named_region(wb = wd_object, sheet, name)
###
ワークブックへワークシートを作成しxlsxで保存する
xlsxファイルを読み込むのではなく、Rで新規ワークブックを作成し、ワークシートを追加するコマンドの紹介です。
順番に実行することで、R標準収録の「iris」データを使用して、「テストシートにオリジナルとテーブル書式を設定」、「Sheet 1にピボットテーブル」を作業フォルダにファイル名「Test.xlsx」として保存します。
データを、そのまま、テーブル、ピポットテーブルで書き込むコマンドが収録されています。テーブルのスタイルは60種類あります。スタイルは次のセクションをご覧ください。
#######################
### ワークブックへワークシートを作成しxlsxで保存する
#######################
### ワークブックの作成:wb_workbookコマンド
# 作成者の設定:creatorオプション
# タイトルプロパティの設定:titleオプション
# 件名の設定:subjectオプション
# 分類プロパティの設定:categoryオプション
# 作成日時の設定:datetime_createdオプション
# テーマを指定:themeオプション;以下が設定可能
# "Atlas","Badge","Berlin","Celestial","Crop","Depth",
# "Droplet","Facet","Feathered","Gallery","Headlines","Integral",
# "Ion","Ion Boardroom","Madison","Main Event","Mesh","Office Theme",
# "Old Office Theme","Organic","Parallax","Parcel","Retrospect","Savon","Slice",
# "Vapor Trail","View","Wisp","Wood Type"
###
New_wb <- wb_workbook(creator = NULL, title = NULL,
subject = NULL, category = NULL,
datetime_created = Sys.time(),
theme = NULL)
###
### ワークシートの追加:wb_add_worksheetコマンド
# ワークブックを指定:wbオプション
# 作成シート名:sheetオプション
# 目盛り線の表示:grid_linesオプション;TRUE/FALSE
# タブ色:tab_colourオプション;初期値:NULL
# ズーム設定:zoomオプション;10:400の範囲
# シートの表示設定:visibleオプション;以下が設定可能
# "true","false","hidden","visible","veryhidden"
### 下記ヘッダー,フッターで使用可能なショートコード###
#&[Page]:ページ番号,&[Pages]:ページ数,
#&[Date]:現在の日付,&[Time]:現在の時刻,
#&[Path]:ファイルのパス,&[File]:ファイル名,
#&[Tab]:シート名
###
# ヘッダー設定:headerオプション;c(左側,中央部,右側)
# フッター設定:footerオプション;c(左側,中央部,右側)
# 偶数ページのヘッダー設定:even_headerオプション;c(左側,中央部,右側)
# 偶数ページのフッター設定:even_footerオプション;c(左側,中央部,右側)
# 先頭ぺージヘッダー設定:first_headerオプション;c(左側,中央部,右側)
# 先頭ぺージフッター設定:first_footerオプション;c(左側,中央部,右側)
# 表示設定:visibleオプション;TRUE/FALSE:シートが一つの時はFALSE不可
# 印刷の縦横方向:orientationオプション;"portrait"/"landscape"
# 印刷解像度の指定:hdpi,vdpiオプション
# 印刷サイズ:paperSizeオプション;
### 下記参照
# 8:A3,9:A4,11:A5,12:B4,13:B5,
# 67:A3横,55:A4横,61:A5横,その他サイズは?wb_page_setup()で確認
###
New_wb <- wb_add_worksheet(wb = New_wb, sheet = "テスト",
grid_lines = TRUE, row_col_headers = TRUE,
tab_color = NULL, zoom = 100,
header = NULL, footer = NULL,
odd_header = NULL, odd_footer = NULL,
even_header = NULL, even_footer = NULL,
first_header = NULL, first_footer = NULL,
visible = "true", #has_drawing = FALSE,
paper_size = getOption("openxlsx2.paperSize", default = 9),
orientation = getOption("openxlsx2.orientation", default = "portrait"),
hdpi = getOption("openxlsx2.hdpi", default = getOption("openxlsx2.dpi", default = 300)),
vdpi = getOption("openxlsx2.vdpi", default = getOption("openxlsx2.dpi", default = 300)))
###
### ワークシートにデータを書き込む:wb_add_dataコマンド
# ワークブックを指定:wbオプション
# 書き込み対象シート名:sheetオプション;名前/インデックス番号
# 書き込みデータ:xオプション
# 書き込み開始列を指定:start_colオプション
# 書き込み開始行を指定:start_rowオプション
# 書き込みを範囲で指定:dimオプション;初期値:wb_dims(start_row, start_col)
# もしくは"A1","A1:B2","A:B"で指定
# データ範囲に名前を付ける:nameオプション
# フィルタを設定:with_filterオプション;TRUE/FALSE
###
New_wb <- wb_add_data(wb = New_wb, sheet = 1, x = iris,
start_col = 1, start_row = 1,
dims = wb_dims(1, 1),
name = NULL, with_filter = TRUE)
###
### ワークシートにデータをテーブルで書き込む:wb_add_data_tableコマンド
# ワークブックを指定:wbオプション
# 書き込み対象シート名:sheetオプション;名前/インデックス番号
# 書き込みデータ:xオプション
# 書き込み開始行を指定:start_rowオプション
# 書き込み開始列を指定:start_colオプション
# 書き込みを範囲で指定:dimオプション;初期値:wb_dims(start_row, start_col)
# フィルタを設定:with_filterオプション;TRUE/FALSE
# テーブル名を設定:table_nameオプション
# テーブルテーマを指定:table_styleオプション;記事内テーブルテーマを参照
###
New_wb <- wb_add_data_table(wb = New_wb, sheet = 1, x = iris,
start_col = 7, start_row = 1,
dims = wb_dims(1, 7),
with_filter = TRUE,
table_style = "TableStyleLight12")
###
### ワークシートにデータをピボットテーブルで書き込む:wb_add_pivot_tableコマンド
# ワークブックを指定:wbオプション
# 書き込み対象シート名:sheetオプション;初期値はシートを追加で書き込む,next_sheet()
# 書き込みデータ:xオプション;wb_data classで指定する
# wb_dataコマンド;wbオプション;ワークブッククラスを指定, sheetオプション, dimsオプション;データ範囲
# 書き込み位置を指定:dimsオプション
# ピボット:フィルタデータを設定:filterオプション;未設定は記述しない
# ピボット:行データを設定:rowsオプション;未設定は記述しない
# ピボット:列データを設定:colsオプション;未設定は記述しない
# ピボット:Σ値データを設定:dataオプション;未設定は記述しない
# ピボット:集計方法を設定:funオプション;以下の設定が可能
# AVERAGE,COUNT,COUNTA,MAX,MIN,PRODUCT,STDEV,STDEVP,SUM,VAR,VARP
New_wb <- wb_add_pivot_table(wb = New_wb, sheet = next_sheet(),
x = wb_data(New_wb, sheet = 1, dims = "G1:K151"),
dims = "A4",
filter = "Species",
rows = "Petal.Width",
data = "Petal.Length",
fun = "AVERAGE")
###
#######################
### Workbookオブジェクトをxlsxで保存:wb_saveコマンド
#######################
# ファイル名を指定:fileオプション
###
wb_save(wb = New_wb, file = "Test.xlsx")
###
参考_テーブルのスタイル60種類を紹介
下記コマンドを実行すると紹介画像のxlsxファイルを取得できます。
###参考####################################
# テーブルスタイル:60種類
TableStyle <- c("TableStyleLight1","TableStyleLight2","TableStyleLight3","TableStyleLight4",
"TableStyleLight5","TableStyleLight6","TableStyleLight7","TableStyleLight8",
"TableStyleLight9","TableStyleLight10","TableStyleLight11","TableStyleLight12",
"TableStyleLight13","TableStyleLight14","TableStyleLight15","TableStyleLight16",
"TableStyleLight17","TableStyleLight18","TableStyleLight19","TableStyleLight20",
"TableStyleLight21","TableStyleMedium1","TableStyleMedium2","TableStyleMedium3",
"TableStyleMedium4","TableStyleMedium5","TableStyleMedium6","TableStyleMedium7",
"TableStyleMedium8","TableStyleMedium9","TableStyleMedium10","TableStyleMedium11",
"TableStyleMedium12","TableStyleMedium13","TableStyleMedium14","TableStyleMedium15",
"TableStyleMedium16","TableStyleMedium17","TableStyleMedium18","TableStyleMedium19",
"TableStyleMedium20","TableStyleMedium21","TableStyleMedium22","TableStyleMedium23",
"TableStyleMedium24","TableStyleMedium25","TableStyleMedium26","TableStyleMedium27",
"TableStyleMedium28","TableStyleDark1","TableStyleDark2","TableStyleDark3",
"TableStyleDark4","TableStyleDark5","TableStyleDark6","TableStyleDark7",
"TableStyleDark8","TableStyleDark9","TableStyleDark10","TableStyleDark11")
# 繰り返し処理の準備
RowNO <- rep(c(1:10), each = 10)
ColNo <- rep(seq(1, 28, by = 3), time = 10)
iris_data <- as.data.frame(iris[1:2,1])
# Workbook objectの作成
wb_workbook() %>%
wb_add_worksheet(sheet = "テスト") -> wb
# 繰り返し処理
for(i in seq(TableStyle)){
#テーブルスタイル名
colnames(iris_data) <- TableStyle[i]
#ワークシートに書き込み
wb %>%
wb_add_data_table(sheet = 1, as.data.frame(iris_data),
dims = wb_dims(ColNo[i], RowNO[i]),
table_style = TableStyle[i]) -> wb
}
# xlsxで保存
wb_save(wb, file = "テーブルスタイル.xlsx")
####################################
ワークシートの体裁を調整するコマンド
ワークシートの体裁を調整するコマンドグループです。罫線、塗色、セル書式、ウィンドウ枠の固定、セルの結合、セルにコメント、データの名前の定義、列幅などを調整するコマンドの紹介です。
なお、多くのコマンドで対象範囲を「dimオプション」で指定します。この場合「enforce = TRUE」とオプションを追記することで「dimオプション」に”D5:J23;B22:D27″などと複数の範囲を指定することが可能です。各範囲は「;」で区切ります。
紹介コマンドを順番に実行することで新規xlsxファイルを保存できるように、各コマンドの結果はNew_wbに保存しています。
#######################
### ワークシートの体裁を調整するコマンド
#######################
### 理解しやすいように新規にワークブックを作成しシートを追加
New_wb <-
# ワークブックの作成
wb_workbook() %>%
# ワークシートを追加
wb_add_worksheet(sheet = "テスト") %>%
# ワークシートにデータを書き込む
wb_add_data(sheet = "テスト", dims = "B2", x = iris, with_filter = TRUE)
# wb_open(New_wb)
###
### 色を設定するためにwbColour objectを作成:wb_colorコマンド
## 以下から適切なオプションを使用する
## 体裁を整える,wb_add_xxxxxxxコマンド内に直接設定も可能です
# R内での色名で指定:nameオプション
# 自動設定:autoオプション;TRUEで適応
# indexed値で指定:indexedオプション
# hex値[ARGB:透明赤緑青;16進数]で指定:hexオプション
# テーマで指定:themeオプション
# 濃淡を指定:tintオプション;-1:1の範囲
###
Test_col <- wb_color(hex = "807fffd4", name = NULL,
auto = NULL, indexed = NULL,
them = NULL, tint = NULL)
###
### セルに罫線を設定する:wb_add_borderコマンド
# ワークブックを指定:wbオプション
# 書き込み対象シート:sheetオプション;初期値:current_sheet()
# 範囲を指定:dimsオプション;ex:"A1","A1:C2"
# 色を指定:bottom_color,left_color,right_color,top_colorオプション
# 罫線種類を指定:bottom_border,left_border,right_border,top_borderオプション
## 以下から選択が可能
# "thin","thick","slantDashDot","none","mediumDashed",
# "mediumDashDot","medium","hair","double","dotted",
# "dashed", "dashedDotDot", "dashDot"
##
# エリアで指定した場合に内側の罫線を設定:
# 垂直:inner_hgridオプション,水平:inner_vgridオプション
# 垂直色:inner_hcolorオプション,水平色:inner_vgridオプション
###
New_wb <- wb_add_border(wb = New_wb, sheet = "テスト",
dims = "B2:F152",
bottom_color = Test_col,
left_color = wb_color(hex = "FF994489"),
right_color = wb_color(hex = "FF133457"),
top_color = Test_col,
bottom_border = "medium", left_border = "medium",
right_border = "medium", top_border = "medium",
inner_hgrid = "double", inner_vgrid = "dotted",
inner_hcolor = wb_color(name = "violet"),
inner_vcolor = wb_color(name = "red"))
# wb_open(New_wb)
###
### セルに塗色を設定する:wb_add_fillコマンド
## wb_add_borderコマンドと共通は除く
# パターンの種類を指定:patternオプション;
## 以下から選択が可能
# "solid","mediumGray","darkGray","lightGray","darkHorizontal",
# "darkVertical","darkDown","darkUp","darkGrid","darkTrellis",
# "lightHorizontal","lightVertical","lightDown","lightUp",
# "lightGrid","lightTrellis","gray125","gray0625"
##
# グラデーションで指定:gradient_fillオプション
## 設定例,xmlの記述で指定する
## 記述参考:https://learn.microsoft.com/ja-jp/dotnet/api/documentformat.openxml.spreadsheet.gradientfill?view=openxml-2.8.1
# '<gradientFill degree="90">
# <stop position="0"><color rgb="FF92D050"/></stop>
# <stop position="1"><color rgb="FF0070C0"/></stop>
# </gradientFill>'
##
###
# 単色で塗りつぶし
New_wb <- wb_add_fill(wb = New_wb, sheet = "テスト",
dims = "B2:F15", color = wb_color("#52BACE"))
# 中央からグラデーションで塗りつぶし
New_wb <- wb_add_fill(wb = New_wb, sheet = "テスト",
dims = "B15:F20",
gradient_fill = '<gradientFill type="path" left="0.2" right="0.2" top="0.5" bottom="0.5">
<stop position="0"><color rgb="757171"/></stop>
<stop position="1"><color rgb="4472C4"/></stop>
</gradientFill>')
# wb_open(New_wb)
###
### セル書式を設定する:wb_add_cell_styleコマンド
## wb_add_borderコマンドと共通は除く,主要オプションのみ
# 書式を設定する項目を指定する:apply_xxxxxオプション,その他
## 必要に応じてTRUEを指定する?環境によってはTRUEが必要?
# apply_alignment,apply_border,apply_fill,apply_font,
# apply_number_format,apply_protection
##
## 文字関係
# 横位置:horizontalオプション;"left","center","right"
# 縦位置:verticalオプション;"top","center","bottom"
# 折り返して全体を表示:wrap_textオプション;"1"/"0"
# 縮小して全体を表示:shrink_to_fitオプション;TRUE/FALSE
# 文字の回転:text_rotationオプション
# インデント:indentオプション;ver.1.0では動作が不安定?
###
# 表示形式:num_fmt_idオプション
##基準参考:https://learn.microsoft.com/ja-jp/dotnet/api/documentformat.openxml.spreadsheet.numberingformat?view=openxml-2.8.1
###
New_wb <- wb_add_cell_style(wb = New_wb, sheet = "テスト",
dims = "B2:F15", apply_alignment = TRUE,
horizontal = "center", vertical = "center",
wrap_text = "1", shrink_to_fit = TRUE,
text_rotation = "0", indent = 2,
apply_number_format = TRUE, num_fmt_id = "10")
# wb_open(New_wb)
###
### セル書式にユーザー定義を設定する:wb_add_numfmtコマンド
#ユーザー定義の指定:numfmtオプション;¥等の特殊文字は前に\\をつける
###
New_wb <- wb_add_numfmt(wb = New_wb, sheet = "テスト",
dims = "B15:F20", numfmt = "\\¥ #.0")
# wb_open(New_wb)
###
### ウィンドウ枠の固定:wb_freeze_paneコマンド
# 先頭行:first_active_rowオプション
# 先頭列:first_active_colオプション
###
New_wb <- wb_freeze_pane(wb = New_wb, sheet = "テスト",
first_active_row = 3,
first_active_col = NULL)
# wb_open(New_wb)
###
### セルの結合:wb_merge_cellsコマンド
##セルの結合解除はwb_unmerge_cellsコマンド
# 結合範囲:dimオプション
###
# セルを結合後に文字を追加すると設定が解除されるので注意
# 初めにB1に"セルを結合"を代入
New_wb <- wb_add_data(wb = New_wb, sheet = "テスト",
# 日本語等が文字化けする環境であれば文字エンコードをutf8にする
# x = iconv("セルを結合", from = "shift-jis", to = "utf8"),
x = "セルを結合",
dims = "B1") %>%
# セルの結合
wb_merge_cells(sheet = "テスト", dims = "B1:F1")
#wb_open(New_wb)
###
### セルにコメントを付与:wb_add_commentコマンド
# コメント内容:commentオプション
###
New_wb <- wb_add_comment(wb = New_wb, sheet = "テスト",
comment = "セル結合", dims = "B1")
#wb_open(New_wb)
###
### データの名前の定義:wb_add_named_regionコマンド
# 名前を定義する:nameオプション
###
New_wb <- wb_add_named_region(wb = New_wb, sheet = "テスト",
dims = "B3:F10",
name = iconv("からだにいいもの",
from = "shift-jis",
to = "utf8"))
#wb_open(New_wb)
###
### 列幅等の調整:wb_set_col_widthsコマンド
# 列幅:widthsオプション
# 列の表示設定:hiddenオプション;TRUE/FALSE
###
New_wb <- wb_set_col_widths(wb = New_wb, sheet = "テスト",
cols = c(2:6), widths = 19)
# wb_open(New_wb)
###
#######################
# 確認
wb_open(New_wb)
ピクセルアートを作成する例
「imager」、「tidyverse」、「png」パッケージを利用します。下記を実行すると以下のようなエクセルファイルを作成できます。「png」パッケージに収録のpngファイルで確認しています。jpeg画像は画像チャネルのコマンド部分を変更する必要があります。
###ピクセルアート例#####
# imagerパッケージの読み込み
# imagerパッケージがなければインストール
if(!require("imager", quietly = TRUE)){
install.packages("imager");require("imager")
}
# tidyverseパッケージの読み込み
# tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
# pngパッケージの読み込み
# pngパッケージがなければインストール
if(!require("png", quietly = TRUE)){
install.packages("png");require("png")
}
# Rのロゴを読み込み
logo <- load.image(system.file("img", "Rlogo.png", package="png"))
# 画像をリサイズ
#img <- image_scale(logo, "30x30")
img <- resize(logo, 30, 30)
# 画像の幅と高さの情報を取得
img_width <- dim(img)[1]
img_height <- dim(img)[2]
# 画像からhex値を取得する
plot_data <- img %>%
as.data.frame(wide = "c") %>%
# jpegの場合はc.1, c.2, c.3と設定する
mutate(hex = rgb(c.4, c.1, c.2, c.3,
maxColorValue = 1)) %>%
mutate_all(~str_replace(., pattern = "#00000000",
replacement = "#FFFFFFFF"))
# プロット用のdata.frameを作成
plot_data <- as.data.frame(matrix(plot_data$hex, ncol = img_width,
nrow = img_height, byrow = TRUE))
# データの行列を取得
serect_rows <- seq(1, nrow(plot_data), by = 1)
serect_cols <- seq(1, ncol(plot_data), by = 1)
# 新規にxlsxファイルを作成
wb <- wb_workbook() %>%
wb_add_worksheet("R_Logo", zoom = 50)
# データを書き込む
for (i in serect_cols) {
col_no <- i
for (get_row in serect_rows) {
col <- paste0(int2col(i), get_row)
wb <- wb %>% wb_add_fill(dims = col,
color = wb_color(hex = plot_data[get_row, col_no]))
}
}
# 列幅を調整
wb <- wb_set_col_widths(wb = wb, sheet = "R_Logo",
cols = serect_cols, widths = 2.5)
# プレビュー
wb_open(wb)
少しでも、あなたの解析が楽になりますように!!