Symfoware

Symfowareについての考察blog

rubyXL Rubyでエクセルファイル(xlsx)を生成

集計結果をExcel形式のファイルで出力したかったので、
Rubyから出力する方法を調べました。
Pythonではいいライブラリを見つけられなかった。



rubyXL



Ruby初心者なので、多機能すぎて使いにくくなく、
かと言って機能が少なすぎずというライブラリを探してみると、
rubyXLが良さそうでした。
https://github.com/weshatheleopard/rubyXL

gemでインストールしました。


$ subo gem install rubyXL






初めてのサンプル



セルに文字列を表示。
2シート目を追加するだけの簡単なサンプルです。


  1. # coding:utf-8
  2. require 'rubyXL'
  3. # 新しいworkbookの作成
  4. workbook = RubyXL::Workbook.new
  5. # worksheetを取得
  6. # デフォルトで1つ生成されている
  7. worksheet = workbook[0]
  8. # シートの名前を変更
  9. worksheet.sheet_name = '新しいシート名'
  10. # セルに文字を追加
  11. worksheet.add_cell(0, 1, 'B1セル')
  12. # 2シート目を追加
  13. worksheet = workbook.add_worksheet('次のシート')
  14. # sample.xlsxという名前で保存
  15. workbook.write('sample.xlsx')




こんなxlsxファイルが出力されました。

679_01.png




フォントとセルの操作



フォントのサイズやセルの色を変更してみます。


  1. # coding:utf-8
  2. require 'rubyXL'
  3. # 新しいworkbookの作成
  4. workbook = RubyXL::Workbook.new
  5. # worksheetを取得
  6. # デフォルトで1つ生成されている
  7. worksheet = workbook[0]
  8. # セルに文字を追加
  9. cell = worksheet.add_cell(0, 1, 'B1')
  10. # フォントを変更
  11. cell.change_font_name '梅明朝'
  12. # フォントサイズを変更
  13. cell.change_font_size 20
  14. # フォントの色を変更
  15. cell.change_font_color 'ff0000'
  16. # セルの色を変更
  17. cell.change_fill '00ff00'
  18. # sample.xlsxという名前で保存
  19. workbook.write('sample.xlsx')



679_02.png





罫線の操作



罫線を引いてみます。


  1. # coding:utf-8
  2. require 'rubyXL'
  3. # 新しいworkbookの作成
  4. workbook = RubyXL::Workbook.new
  5. # worksheetを取得
  6. # デフォルトで1つ生成されている
  7. worksheet = workbook[0]
  8. # セルに文字を追加
  9. cell = worksheet.add_cell(0, 1, '')
  10. # セルの下に罫線を引く
  11. cell.change_border(:bottom, 'medium')
  12. # 細い罫線を引く
  13. # チェインメソッドな指定も可能
  14. cell = worksheet.add_cell(0, 3, '')
  15.                 .change_border(:bottom, 'thin')
  16. # sample.xlsxという名前で保存
  17. workbook.write('sample.xlsx')



679_03.png





セルの書式



3桁ごとにカンマ区切りの書式を設定。


  1. # coding:utf-8
  2. require 'rubyXL'
  3. # 新しいworkbookの作成
  4. workbook = RubyXL::Workbook.new
  5. # worksheetを取得
  6. # デフォルトで1つ生成されている
  7. worksheet = workbook[0]
  8. # セルに文字を追加
  9. cell = worksheet.add_cell(0, 1, 12345)
  10. # 書式設定
  11. # see https://support.office.com/en-us/article/5026bbd6-04bc-48cd-bf33-80f18b4eae68
  12. cell.set_number_format '#,##0'
  13. # sample.xlsxという名前で保存
  14. workbook.write('sample.xlsx')



679_04.png




列の幅



列の幅を変更します。


  1. # coding:utf-8
  2. require 'rubyXL'
  3. # 新しいworkbookの作成
  4. workbook = RubyXL::Workbook.new
  5. # worksheetを取得
  6. # デフォルトで1つ生成されている
  7. worksheet = workbook[0]
  8. # セルに文字を追加
  9. cell = worksheet.add_cell(0, 1, '長い文字列ですよー')
  10. # 幅を広げる
  11. worksheet.change_column_width(1, 20)
  12. # sample.xlsxという名前で保存
  13. workbook.write('sample.xlsx')



679_05.png




フォント名、サイズのデフォルト値設定



使用するフォントとサイズの初期値を指定。
このやり方が正しいのかわかりませんが・・・


  1. # coding:utf-8
  2. require 'rubyXL'
  3. # 新しいworkbookの作成
  4. workbook = RubyXL::Workbook.new
  5. # フォントのデフォルト指定
  6. workbook.fonts[0].set_name('梅明朝')
  7. workbook.fonts[0].set_size(14)
  8. # worksheetを取得
  9. # デフォルトで1つ生成されている
  10. worksheet = workbook[0]
  11. # セルに文字を追加
  12. cell = worksheet.add_cell(0, 1, '日本語')
  13. # sample.xlsxという名前で保存
  14. workbook.write('sample.xlsx')



679_06.png
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2016/03/08(火) 22:52:34|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PHP 配列の先頭の要素を取り出す(array_shift) | ホーム | Beanstalkd Buriedになったジョブを削除する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1868-64fabad0
この記事にトラックバックする(FC2ブログユーザー)