Ruby Spreadshet gem,我如何居中对齐数字 [英] Ruby spreadshet gem, how can I center align a number

查看:154
本文介绍了Ruby Spreadshet gem,我如何居中对齐数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 http://spreadsheet.rubyforge.org 来生成电子表格,在某事上遇到麻烦.我正在打开一个现有的工作簿并向其中添加数据.

I'm using http://spreadsheet.rubyforge.org to generate a spreadsheet and I'm having trouble with something. I'm opening an existing workbook and adding data to it.

我已经设法使数字格式在某种程度上可以正常工作,至少excel将此数据视为数字,但是(非常不像excel)客户端希望数字在中心对齐:(

I have manged to get number formatting working to some extent, at least excel is seeing this data as a number, but (very un-excel like) the client would like the number aligned in the center :(

我当前的代码如下:

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

也许有些牵强,但想知道是否有人可以提供帮助?

Maybe a little far fetched but wondered if anybody can help?

  • 电子表格当前不修改格式.特别是这意味着 如果您将单元格的值设置为日期,则只能将其读取为 日期,如果在更改之前正确设置了其格式.
  • Spreadsheet does not modify Formatting at present. That means in particular that if you set the Value of a Cell to a Date, it can only be read as a Date if its Format was set correctly prior to the change.

编辑Trevoke

感谢您的帮助.我已经尝试过您的代码,并且效果很好.我想区别是我正在编辑一个现有的电子表格,在这种情况下,格式将被忽略.试试这个:

Thanks for helping with this. I've tried your code and it works fine. I guess the difference is I'm editing an existing spreadsheet, in which case the formatting is ignored. Try this:

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'

推荐答案

以下是该库的格式化方法的代码:

Well, here's the code for the library's format methods: format.rb. Last time I used that gem, it didn't do formatting very well, but it looks like it's been updated since.

您可以尝试以下操作:

  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'

这对我有用.尝试-同时使用:centre和:center.让我知道.

This worked for me. Try it - with both :centre and :center. Let me know.

这篇关于Ruby Spreadshet gem,我如何居中对齐数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆