代码之家  ›  专栏  ›  技术社区  ›  tsdbrown

ruby spreadshet gem,如何将数字居中对齐

  •  1
  • tsdbrown  · 技术社区  · 15 年前

    我在用 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
    

    也许有点牵强,但想知道是否有人能帮忙?

    • 电子表格目前不修改格式。这就意味着 如果将单元格的值设置为日期,则只能将其作为 更改前格式设置正确的日期。

    编辑Trevoke

    谢谢你帮忙。我试过你的代码,它运行良好。我想不同之处在于我正在编辑一个现有的电子表格,在这种情况下,格式将被忽略。试试这个:

    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'
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   Trevoke    15 年前

    好吧,这是库的格式化方法的代码: 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'
    

    这对我有用。尝试一下-同时使用:中心和:中心。让我知道。

    推荐文章