2013/08/09(金) [n年前の日記]
#1 [ruby] spreadsheet を使うとOcraでexe化できず
Ruby + spreadsheet を使って、Excelファイル中のセル内容を読んで html にする、というスクリプトを書いていたのだけど。.rb を実行すると動いてくれるのに、Ocra で exe化するとエラーが出て動作しない、という状態になってしまって。
exeを実行すると、以下のようなエラーが出てしまう。
ググってみたところ、 _Twitter / iMAKOPi: ocra+spreadsheetで実行時に「read_str ... という情報が。
試しに、Rubyインストールフォルダ\lib\ruby\gems\1.9.1\gems\spreadsheet-0.8.8\lib\spreadsheet\excel\reader.rb を開いて、require が列挙されてる最後のあたりに、以下を追加してみた。
Ocra で exe化してみたら、今度は上手く行った。ありがたや。しかし、なんだろうなコレ。さっぱり分からないけど、動いたからいいか…。
exeを実行すると、以下のようなエラーが出てしまう。
C:\home\prg\excel_vba>htmlconv.exe -x kowa_plan_source.xls -i html\index_template.html -o html\index.html C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/reader.rb:288:in `read_font': undefined method `read_string' for #<Spreadsheet::Excel::Reader:0x28f6260> (NoMethodError) from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/reader.rb:824:in `read_workbook' from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/reader.rb:122:in `read' from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet/excel/workbook.rb:32:in `open' from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet.rb:63:in `open' from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/lib/ruby/gems/1.9.1/gems/spreadsheet-0.8.8/lib/spreadsheet.rb:69:in `open' from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/src/htmlconv.rb:64:in `main_job' from C:/Users/mieki256/AppData/Local/Temp/ocrCCFA.tmp/src/htmlconv.rb:227:in `<main>'
ググってみたところ、 _Twitter / iMAKOPi: ocra+spreadsheetで実行時に「read_str ... という情報が。
ocra+spreadsheetで実行時に「read_stringが無い」というエラーが出る場合、lib/spreadsheet/excel/reader.rbにbiff8とbiff5のrequireを追加しておくと良い。
試しに、Rubyインストールフォルダ\lib\ruby\gems\1.9.1\gems\spreadsheet-0.8.8\lib\spreadsheet\excel\reader.rb を開いて、require が列挙されてる最後のあたりに、以下を追加してみた。
require_relative 'reader/biff8' require_relative 'reader/biff5'
Ocra で exe化してみたら、今度は上手く行った。ありがたや。しかし、なんだろうなコレ。さっぱり分からないけど、動いたからいいか…。
[ ツッコむ ]
以上です。