5
4

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.

キサマッ、方眼紙だな!通すわけにはいかないッ! -Ruby で Excel方眼紙判定- #ruby #方眼紙

Posted at

hogan_title.png

概要

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列目までチェック

※私は 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)

hoganshi.png

  • 実行
% ruby excel_hogan_shi.rb hoganshi.xlsx
キサマッ、方眼紙だな!

方眼紙ではない(not_hoganshi.xlsx)

not_hoganshi.png

  • 実行
% ruby excel_hogan_shi.rb not_hoganshi.xlsx
よろしい、通るがよい

:books: 外部資料

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?