2
2

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.

Axlsxにて、条件付き書式を使う

Posted at

RubyでExcelファイルを生成できるAxlsxで、条件付き書式を設定したいと思いました。

条件付き書式とは?

条件付き書式とは、セルの値が条件に合ったら文字の色や背景色を変えるとか、そういうのができるやつです。

よくある使い方では、テストで成績が

  • 上位な人のセルは緑、
  • 中位の人のセルは黄色
  • 下位の人のセルは赤

にするとかですね。

Axlsxで条件付き書式を設定する

書式を定義する

まず、条件付き書式で使う書式を定義します。その際に、type: :dxfを指定します。
サンプルコードを飛ばし読みしていたせいでここになかなか気付かなくて數十分時間を無駄にしました…。

Axlsx::Package.new do |package|
  package.workbook do |workbook|
    red_text = workbook.styles.add_style(
      font_name: 'MS Pゴシック',
      sz: 10,
      fg_color: 'FF0000',
      type: :dxf # ここ重要
    )
  end
end

条件付き書式をセルに反映する

条件付き書式をセルに反映するには、WorkSheet#add_conditional_formattingメソッドを使います。

今回は、A列の値が0未満だったら赤文字にするという条件付き書式を設定してみます。

red_text = workbook.styles.add_style(
  font_name: 'MS Pゴシック',
  sz: 10,
  fg_color: 'FF0000',
  type: :dxf
)

workbook.add_worksheet(name: 'sheet1') do |worksheet|
  # 行を入れていく処理などを行う、が省略…

  # 条件付き書式を設定
  worksheet.add_conditional_formatting(
    "A1:A1048576",
    type: :cellIs,
    operator: :lessThan,
    formula: '0',
    dxfId: red_text,
    priority: 1
  )
end

結果は以下のような感じ。いいですね!
image.png

その他、サンプル

サンプルは、githubにもあります。こちらのほうには様々な条件付き書式のサンプルがあるので参考にしましょう。

example_conditional_formatting.rb

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?