dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

rubyでxlsファイルをtsvファイルに変換

2011-03-22 23:33:27 | ruby
rubyでxlsファイルをtsvファイルに変換するプログラムです。
標準入力からxlsファイルを読み込む場合には、Spreadsheet.openで直接読み込もうとするとエラーになるため、いったんTempfileに書き込んでおいて、Tempfileから読み直すようにしています。

#!/usr/local/bin/ruby
#
# usage: xls_to_tsv.rb [xls] > {tsv}
#

$KCODE = 'u'
require 'jcode'
require 'rubygems'
require 'spreadsheet'

# 引数
xls_file = nil
if ARGV.length == 0
tf = Tempfile.new('xls_to_tsv')
data = STDIN.read
tf.write(data)
tf.rewind
xls_file = tf
elsif ARGV.length == 1
xls_file = ARGV[0]
else
STDERR.print("usage: xls_to_tsv.rb [xls] > {tsv}\n")
exit(1)
end

# sheet
book = Spreadsheet.open(xls_file)
sheet = book.worksheet(0)

0.upto(sheet.row_count - 1) do |r|
tsv_values = []

0.upto(sheet.column_count - 1) do |c|
if sheet[r, c].class == Spreadsheet::Formula
value = sheet[r, c].value.to_s
elsif ! sheet[r, c]
value = ''
else
value = sheet[r, c].to_s
end

tsv_values.push(value)
end

print(tsv_values.join("\t") + "\n")
end

# 標準入力の場合
if ARGV.length == 0
xls_file.close
end
この記事についてブログを書く
« rubyでtsvファイルからxlsフ... | トップ | mysqlで検索結果の上位に対し... »

ruby」カテゴリの最新記事