2012年7月13日金曜日

ruby でエクセルファイル書き出し

Ruby を職場で着々と活躍させていますよ。
今回は Ruby で、テキストファイルからエクセルファイルを作成しました。エクセルファイルは Office 2007 以降の xlsx 形式ではなくて、これまでもこれからもの xls 形式です。

エクセルを扱うため spreadsheet をインストールします。下記コマンドを実行してインストール。

gem install spreadsheet

これでRuby からエクセルファイルを操作できます。
テキストファイルの項目は、カンマ "," で区切られているものとします。それなら CSV ファイルで良いじゃないか!とか言わないでください。うちの職場のちょっとした事情なんです。

# encoding: Shift_JIS

=begin
処理概要
テキストファイルからエクセルファイルに変換します。
全てが文字として扱われます。

引数について
引数1:入力ファイル
引数2:出力ファイル
引数3:出力シート名
=end

require 'date'
require 'rubygems'
require 'spreadsheet'

print Time.now, " 処理開始\n"

inFile      = ARGV[0]   # 入力ファイル
outFile     = ARGV[1]   # 出力ファイル
sheetName   = ARGV[2]   # 出力シート名

Spreadsheet.client_encoding = 'Shift_JIS'
workbook = Spreadsheet::Workbook.new
worksheet = workbook.create_worksheet(:name=>sheetName) # シート名
fr = open(inFile)                                       # 入力ファイルオープン
i = 0
while line = fr.gets do                                 # 入力ファイルを1行ずつ読込
    ary = line.split(",")                               # カンマで切り分け
    j = 0
    for data in ary
        worksheet[i, j] = data                          # 1セルずつデータをセット
        j += 1
    end
    i += 1
end
workbook.write(outFile + (Time.now.strftime "%Y%m%d") + '.xls')   # ファイル名

print Time.now, " 処理終了\n"

うむうむ、 Ruby は学びやすいですね。学習コストが低そうです。

0 件のコメント :

コメントを投稿