2

http://spreadsheet.rubyforge.orgを使用してスプレッドシートを生成していますが、何か問題があります。既存のブックを開いてデータを追加しています。

数値の書式設定をある程度機能させることができました。少なくともExcelはこのデータを数値として認識していますが、(非常にExcelとは異なりますが)クライアントは数値を中央に配置したいと考えています:(

私の現在のコードは次のようになります。

nfmt = Spreadsheet::Format.new :number_format => '0.00'
row = sheet.row(1)
row[0] = "Result"
row[1] = 45.55
row.set_format 1, nfmt

少し大げさかもしれませんが、誰か助けてくれませんか?

  • 現在、スプレッドシートは書式設定を変更しません。特に、セルの値を日付に設定すると、変更前にフォーマットが正しく設定されている場合にのみ、日付として読み取ることができます。

トレヴォークの編集

ご協力いただきありがとうございます。私はあなたのコードを試してみましたが、うまくいきます。違いは、既存のスプレッドシートを編集していることです。この場合、書式設定は無視されます。これを試して:

require 'rubygems'
require 'spreadsheet'

Spreadsheet.client_encoding = 'UTF-8'

book = Spreadsheet.open "edit_me.xls" # Blank spreadsheet

sheet1 = book.worksheet 0

format = Spreadsheet::Format.new :horizontal_align => :centre
sheet1.row(0).default_format = format
sheet1.row(0).push 'I rule 2!', 43.56

book.write 'edited_you.xls'
4

1 に答える 1

4

ライブラリのフォーマット メソッドのコードは次のとおりです: format.rb。前回その gem を使用したときは、フォーマットがうまく機能しませんでしたが、その後更新されたようです。

これを試すことができます:

  54     # Horizontal alignment    
  55     # Valid values: :default, :left, :center, :right, :fill, :justify, :merge,    
  56     #               :distributed    
  57     # Default:      :default    
  58     enum :horizontal_align, :default, :left, :center, :right, :fill, :justify,    
  59                             :merge, :distributed,    
  60          :center      => :centre,    
  61          :merge       => [ :center_across, :centre_across ],    
  62          :distributed => :equal_space

編集!追加情報

require 'rubygems'
require 'spreadsheet'

Spreadsheet.client_encoding = 'UTF-8'

book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet :name => 'test'

format = Spreadsheet::Format.new :horizontal_align => :centre
sheet1.row(0).default_format = format
sheet1.row(0).push 'I rule!'

book.write 'test.xls'

これは私にとってはうまくいきました。試してみてください - :center と :center の両方で。お知らせ下さい。

于 2010-01-20T18:26:07.623 に答える