dak ブログ

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

rubyでtsvファイルからxlsファイルを作成(その2)

2011-03-21 11:49:13 | ruby
rubyでtsvファイルからxlsファイルを生成するプログラムで、Spreadsheet::Workbook#writeで標準出力に出力しようとするとエラーになりますが、データをTempfileに出力して、Tempfileからデータを読み直して標準出力に出力することができます。


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

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

# 引数
xls_file = nil
if ARGV.length == 0
xls_file = Tempfile.new('tsv_to_xls')
elsif ARGV.length == 1
xls_file = ARGV[0]
else
STDERR.print("usage: tsv_to_xls.rb [xls] < {tsv}\n")
exit(1)
end

# sheet
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet

# tsv 読み込み
STDIN.each_with_index do |line, r|
a = line.chomp.split("\t")
a.each_with_index do |value, c|
sheet[r, c] = value
end
end

# 出力
book.write(xls_file)

# 標準出力へ
if ARGV.length == 0
xls_file.rewind
data = xls_file.read
STDOUT.write(data)
end
この記事についてブログを書く
« mysqlで検索結果に順位を付与... | トップ | rubyでxlsファイルをtsvファ... »

ruby」カテゴリの最新記事