rubyでExcelで読めるファイルを出力するのにCSVだとちとまずいのでxlsxファイルが出力できるというaxlsxというのをgemでインストール。
最初はrooというのがいいのかと思ってたら、Excelファイル出力には使えないそうだ。
それでやりたいのはセルの色とセル内改行と計算式とシートの追加。
以下のスクリプトでOKだった。
(※ubuntu上のlibreoffice)
require 'axlsx'
package = Axlsx::Package.new
ws1 = package.workbook.add_worksheet(name: 'Example')
ws2 = package.workbook.add_worksheet(name: 'Ex2')
ws1.add_row([100,200,'=A1+B1'])
ws1.add_row(['this','is', 'pen'])
cellcolor = ws1.styles.add_style(:bg_color => '005555', :fg_color => 'FFFFFF', :sz => 14, :alignment => { :horizontal=> :center })
ws1.add_row(['Hello', 'World'], style: cellcolor)
ws2.add_row(["Hello\nWorld"], height: 30)
package.serialize('example.xlsx')
これで良しと思ったらruby1.8.7でaxlsxがインストールできなかった。
なのでイマイチだがspreadsheetに変更。注:xlsxでなくxlsファイルになる。
require 'spreadsheet'
# Spreadsheet.client_encoding = 'UTF-8'
# 新規作成
book = Spreadsheet::Workbook.new
ws1 = book.create_worksheet :name => 'Example'
ws2 = book.create_worksheet :name => 'Ex2'
bgcolor = Spreadsheet::Format.new :pattern_fg_color => :yellow, :pattern => 1
ws1.row(0).concat %w{abc xyz 漢字}
ws1.row(0).default_format = bgcolor
format = Spreadsheet::Format.new :color => :blue
ws1[1,0] = 100
ws1[1,1] = 200
ws1[1,2] = '=B2+C2'
ws1[1,3] = "=B2+C2"
ws1.row(1).default_format = format
ws1[2,0] = "Hello\nWorld"
ws1.row(2).height=24
book.write('example.xls')
計算式は使えなかったが、シートと改行とカラーができたんでまあいいか。
ruby1.8.7はcsvも1.9版の元になったというfastcsvにしなきゃ行けなかったり、往生しまっせ。
と思ったらWriteExcelというのがあった。出力のみだったが、それでいいので結局これにしようか。
fmt = workbook.add_format(
:bg_color => 'pink',
:pattern => 1
)
ws.set_row(0,24) # height
ws.write_row(0,0,["mag\ngie", 'milly', 'molly', 'may'],fmt)
ws.write(1,0,000012,fmt)
こんな感じで使えたし。
最初はrooというのがいいのかと思ってたら、Excelファイル出力には使えないそうだ。
それでやりたいのはセルの色とセル内改行と計算式とシートの追加。
以下のスクリプトでOKだった。
(※ubuntu上のlibreoffice)
require 'axlsx'
package = Axlsx::Package.new
ws1 = package.workbook.add_worksheet(name: 'Example')
ws2 = package.workbook.add_worksheet(name: 'Ex2')
ws1.add_row([100,200,'=A1+B1'])
ws1.add_row(['this','is', 'pen'])
cellcolor = ws1.styles.add_style(:bg_color => '005555', :fg_color => 'FFFFFF', :sz => 14, :alignment => { :horizontal=> :center })
ws1.add_row(['Hello', 'World'], style: cellcolor)
ws2.add_row(["Hello\nWorld"], height: 30)
package.serialize('example.xlsx')
これで良しと思ったらruby1.8.7でaxlsxがインストールできなかった。
なのでイマイチだがspreadsheetに変更。注:xlsxでなくxlsファイルになる。
require 'spreadsheet'
# Spreadsheet.client_encoding = 'UTF-8'
# 新規作成
book = Spreadsheet::Workbook.new
ws1 = book.create_worksheet :name => 'Example'
ws2 = book.create_worksheet :name => 'Ex2'
bgcolor = Spreadsheet::Format.new :pattern_fg_color => :yellow, :pattern => 1
ws1.row(0).concat %w{abc xyz 漢字}
ws1.row(0).default_format = bgcolor
format = Spreadsheet::Format.new :color => :blue
ws1[1,0] = 100
ws1[1,1] = 200
ws1[1,2] = '=B2+C2'
ws1[1,3] = "=B2+C2"
ws1.row(1).default_format = format
ws1[2,0] = "Hello\nWorld"
ws1.row(2).height=24
book.write('example.xls')
計算式は使えなかったが、シートと改行とカラーができたんでまあいいか。
ruby1.8.7はcsvも1.9版の元になったというfastcsvにしなきゃ行けなかったり、往生しまっせ。
と思ったらWriteExcelというのがあった。出力のみだったが、それでいいので結局これにしようか。
fmt = workbook.add_format(
:bg_color => 'pink',
:pattern => 1
)
ws.set_row(0,24) # height
ws.write_row(0,0,["mag\ngie", 'milly', 'molly', 'may'],fmt)
ws.write(1,0,000012,fmt)
こんな感じで使えたし。
※コメント投稿者のブログIDはブログ作成者のみに通知されます