2010-01-20 1 views
1

Я использую http://spreadsheet.rubyforge.org для создания электронной таблицы, и у меня возникают проблемы с чем-то. Я открываю существующую книгу и добавляю к ней данные.Ruby spreadshet gem, как я могу выровнять по центру число

Я сведущий, чтобы получить номер форматирования работает в каком-то степени, по крайней мере, первенствует видим эти данные, как номер, но (очень не-первенствует как) клиент хотел бы число выровненного в центре :(

Мой текущий код выглядит примерно так:?

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

может быть, немного надуманным, но задавался вопросом, если кто-нибудь может помочь

  • Spreadsheet не изменяет форматирование в настоящее время T. hat означает, в частности, , что если вы установите значение ячейки для даты, ее можно считать только как Дата, если ее формат был установлен правильно до изменения.

Редактировать для 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' 
+0

Yup .. Уверен, что вы нашли ошибку! Для меня это тоже не работает. – Trevoke

+0

Я зарегистрировал запись об ошибке https://rubyforge.org/tracker/index.php?func=detail&aid=27719&group_id=678&atid=2677. Еще раз спасибо за вашу помощь :) – tsdbrown

+0

Как мы нажимаем на конкретную ячейку ... с номером строки и столбца? –

ответ

2

Ну, вот код для методов форматирования библиотеки: format.rb. В прошлый раз, когда я использовал этот драгоценный камень, он не очень хорошо форматировал, но похоже, что он обновлен с тех пор.

Вы можете попробовать это:

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 

EDIT! Дополнительная информация

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. Дай мне знать.

+0

Спасибо, я уже пробовал настроить это, но он, похоже, не работает. Я добавил комментарий, который я нашел в руководстве по моему вопросу. Хотя я не совсем понимаю смысл, который говорит, что он не изменяет форматирование, хотя мой исходный файл имеет центральное выравнивание в нем, запись новых данных, похоже, заменяет это. – tsdbrown

+0

Это «формат данных», а не «формат отображения». Формат данных - это дата, валюта и т. Д. Дисплей ... Ну, сломанный, я думаю. Пора отправить им отчет об ошибке! – Trevoke

+0

Прежде чем я это сделаю, лучше проверить (если вы не возражаете), что я понял, как правильно это использовать! enum добавляет метод экземпляра в класс формата правильно? Если первым аргументом является значение по умолчанию (: по умолчанию). Я пробовал передавать: horizontal_align =>: center в вызове Format.new, а также вызывать его после создания объекта формата (nmft), не работает. – tsdbrown