概要
Excelのシート名を一括取得し、標準出力する
内容
Excelのシート名を一括取得し、標準出力します
用途としては大量のシートが存在する場合の手作業の削減。
開発作業の都合上、シート名を別のプレーンテキストに利用したい場合、など。
仕様
・引数は1つ
・引数はファイル名
・結果は1シート1行で標準出力。順序は定義順に保持する
・Unixの理念に基づいてシンプルな機能に専念。やりたいことがあれば他のコマンドと組み合わせる
サンプルコード
# encoding: utf-8 require 'pp' require 'win32ole' require_relative "standard_io" class ExcelSheets include StandardIo validate_args_counts 1 validate_file 0 def initialize(args) @args = args end def sheets begin xl = WIN32OLE.new('Excel.Application') book = xl.Workbooks.Open(get_absolute_path(@args[0])) xl.Worksheets.each{|s|puts s.name.encode "utf-8"} rescue puts "例外発生" puts $! puts $@ ensure xl.Workbooks.Close xl.Quit end end private def get_absolute_path(filename) fso = WIN32OLE.new('Scripting.FileSystemObject') return fso.getAbsolutePathName(filename) end end excel_sheets = ExcelSheets.new($*) exit unless excel_sheets.validate excel_sheets.sheets
standard_io
standard_io部に関しては下記記事参照
Ruby | 標準入出力処理時のValidationをクラスマクロで共通化
http://d.hatena.ne.jp/tbpg/20130625/1372165415
サンプルExcel
出力
$ ruby excel_sheets.rb hoge.xlsx hoge hige hage