概要
Excel 方眼紙かどうか判別する Ruby スクリプトを作成しました
インストール
rubyXL を利用して Excel を操作します
rubyXL
gem install rubyXL
仕様
- 方眼紙の要件は以下とする
- rubyXL で取得した row の ht(高さ) が 13.5
- rubyXL が2列目以降のデータを正しく返してくれないの仕方なく 1列目だけチェック
- rubyXL で取得した column の width が 2.25 ( Excel の GUI で列の幅に 1.63 を設定した場合の値 )
- 1列目から5列目までチェック
- rubyXL で取得した row の ht(高さ) が 13.5
※私は Excel 方眼紙が好きではないので詳しいことは知りませんが、
方眼紙を作る場合は、 行の高さ 13.5, 列の幅 1.63 に設定するのが一般的なようです。
ソースコード
require 'rubyXL'
require 'pathname'
class ExcelHoganShi
HOGAN_WIDTH = 2.25
HOGAN_HEIGHT = 13.5
def initialize(file)
book = RubyXL::Parser.parse(File.expand_path(file))
@sheet = book[0]
end
def hogan_shi?
return false unless hogan_width?
hogan_height?
end
private
def hogan_width?
(0..4).each do |i|
return false unless @sheet.get_column_width_raw(i) == HOGAN_WIDTH
end
true
end
def hogan_height?
@sheet.get_row_height(0) == HOGAN_HEIGHT
end
end
excel_hogan_shi = ExcelHoganShi.new(ARGV[0])
if excel_hogan_shi.hogan_shi?
puts "キサマッ、方眼紙だな!"
else
puts "よろしい、通るがよい"
end
動作確認
方眼紙(hoganshi.xlsx)
- 実行
% ruby excel_hogan_shi.rb hoganshi.xlsx
キサマッ、方眼紙だな!
方眼紙ではない(not_hoganshi.xlsx)
- 実行
% ruby excel_hogan_shi.rb not_hoganshi.xlsx
よろしい、通るがよい