7
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

R で openxlsx パッケージを用いて xlsx ファイルを扱う

Last updated at Posted at 2016-12-06

JDK に依存しないopenxlsxパッケージを用いて xlsx ファイルからの入力と出力を試しました。
記述時の環境は以下の通りです。

  • Windows 10 Pro
  • R 3.2.5 Windows 64bit版
  • openxlsx 3.0.0
  • Rtools32.exe

事前準備

RTools をインストールし、 bin フォルダを環境変数 PATH に追加しておく

R のバージョンにあった RTools をインストールします。ダウンロードは以下から。
Building R for Windows

openxlsx パッケージのインストール

通常通り。

install.packages('openxlsx')
library(openxlsx)

使い方

読込

ファイルパスとシート番号を指定して data.frame として読み込みます。

df <- read.xlsx(path, sheet = 1)

引数は色々あるので、必要に応じて ?read.xlsx で参照すると良いでしょう。
例えば、1列目と1行目にそれぞれ特殊記号を含むような項目名の付いた正方行列データの場合は以下のようにすると、後の処理が楽になるかもです。

df <- read.xlsx(path, sheet = 1, check.names = F, rowNames = T)

書出

ワークブックオブジェクトを作成し、シートを追加し、その上にデータを設定していくイメージです。
openxlsx ではセルやヘッダなどのスタイルを指定することもできますが、特に飾ったりしたくない場合は以下のような方法で十分かと思います。

wb <- createWorkbook()
addWorksheet(wb, 'シート名1')
addWorksheet(wb, 'シート名2')
# withFilter = T の時は各列に Excel のフィルタが付きます。
writeData(wb, sheet = 'シート名1', x = df1, withFilter=F)
writeData(wb, sheet = 'シート名2', x = df2, withFilter=F)
# フォント指定をしない場合、Calibri が適用されます。
# "MS Pゴシック"や"MS Pゴシック"を指定すると、xlsx ファイルが壊れました。
modifyBaseFont(wb, fontSize = 11, fontColour = "#000000", fontName = "MS PGothic")
# 上書きを許可しない場合、overwrite = F とする。
saveWorkbook(wb, path, overwrite = T)

感想

思ったより簡単に xlsx を扱うことができました。
今まで xlsx データを扱う際には一度各シートを csv に変換する手間がありましたが、そのまま読み書きできるようになれば、単純になりますね。
大きなサイズの csv を扱う場合にも、 xlsx では内部で圧縮されているので有利な気がします。

課題

フォント指定で日本語フォントを指定する方法がよくわかっていません。ソースコードを UTF-8 で書いてるのが良くないのかもしれません。

参考資料

RでExcelのデータを読む方法

  • 読込みだけなら hadley/readxl が良さそう。
  • openxlsx は日時データの扱いに注意が必要とのこと。
7
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?