Ruby Spreadshet gem,我如何居中对齐数字 [英] Ruby spreadshet gem, how can I center align a number
问题描述
我正在使用 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屋!