環境
Ubuntu 20.4
Ruby 2.6
Rails 5.2
はじめに
Excelファイルに対し、読み取りと書き込みの両方ができる、RubyXLというgemがあります。このgemのchange_borderメソッドを利用して、Excelのセルに罫線を引くことができます。このメソッドで使うことができる、パラメータと罫線の種類について調べてみました。
change_borderの使い方
change_borderの使い方は公式サイトを見れば載っています。
公式サイト
https://github.com/weshatheleopard/rubyXL?tab=readme-ov-file#changing-borders-
# Possible weights: hairline, thin, medium, thick
# Possible "directions": top, bottom, left, right, diagonal
worksheet.sheet_data[0][0].change_border(:top, 'thin') # Sets A1 to have a top, thin border
サンプルにある通り、罫線の種類は、change_borderの第2引数に設定します。
サンプルでは、hairline, thin, medium, thickの4種類のパラメータが渡せるといった記述があります。4種類もあれば十分かも分かりませんが、実際には、もっと沢山の種類のパラメータが用意されています。
GitHubにあるRubyXLのソースを検索すると、実際には、これだけのパラメータが用意されていることが確認することができます。全部で13種類です。
ST_BorderStyle = %w{ none thin medium dashed dotted thick double hair
mediumDashed dashDot mediumDashDot dashDotDot slantDashDot }
サンプルを出力する
すべての罫線を出力してみます。
require 'rubyXL'
require 'rubyXL/convenience_methods'
workbook = RubyXL::Workbook.new
worksheet = workbook[0]
sT_BorderStyle = %w{ none thin medium dashed dotted thick double hair mediumDashed dashDot mediumDashDot dashDotDot slantDashDot }
sT_BorderStyle.each_with_index do |val, idx|
worksheet.add_cell(idx, 0, val).change_border(:bottom, val)
end
workbook.write('./Ruby/sample_1.xlsx')
出力されたExcelファイルです。
ChatGPTに聞いてみる
Copilot(ChatGPT-4)に聞いてみました。プロンプトには次のように入力します。
RubyにRubyXLというgemがあります。このgemを使って、Excelシートに罫線を引きたいと思っています。指定できる罫線の種類を一覧で表示してください。
教えてくれた、パラメータ値は、「medium、thin、double、dotted」の4種類でした。
公式サイトのサンプルコードで紹介されているパラメータ値は、「hairline, thin, medium, thick」の4種類です。
ChatGPTは、どうやら、こちらの記事を参考にしたようです。
https://www.tairaengineer-note.com/ruby-rubyxl-usage-list/
公式サイトの情報を一番の参考にしてくれないところが、現状のChatGPT-4の限界なのだろう。GitHubのソースコードは一切見ていないと思われる。確信犯です。