Я постараюсь максимально упростить вопрос. Я создаю файл xls с помощью axlsx, и внутри файла есть столбец, представляющий длину задачи в этом формате [h]:mm:ss
Я хочу, чтобы ячейки имели этот формат, и в последней строке я хочу добавить все строки столбца. Вот шаблон для xls
wb = xlsx_package.workbook
wb.add_worksheet(name: "Length") do |sheet|
time = wb.styles.add_style :num_fmt => 46
sheet.add_row [
"Length"
], :style => title
@tasks.each do |task|
sheet.add_row [
Time.at(task.duration*60).utc.strftime("%k:%M:%S").strip
], :style => [
time
]
end
range_amount = "D2:D#{@tasks.size+1}"
sheet.add_row ["=SUM(#{range_amount})"], :style => [time]
end
У меня есть проблема
В LibreOffice ячейки времени добавляют этот символ '
в начале (перед временем), например '0:50:00
, поэтому явно не очень хорошо отформатирован.
Если я загружу файл в oneDrive, у меня не будет этого нового персонажа. Ячейки имеют этот формат [h]:mm:ss
. Однако я не могу СУММИРОВАТЬ диапазон. Последняя ячейка имеет значение =SUM(D2:D174)
, но показывает 0
, и если я изменю формат на [h]:mm:ss
, оно изменится на 0:00:00
Спасибо
1 ответ
Моя ошибка заключалась в попытке манипулировать строками как временем, вот как я решил
wb = xlsx_package.workbook
wb.add_worksheet(name: "Length") do |sheet|
time_title = sheet.styles.add_style(:bg_color => "55FF0000", :fg_color=>"FFFFFFFF", :border=>Axlsx::STYLE_THIN_BORDER, :alignment=>{:horizontal => :center}, :num_fmt => 46)
time = wb.styles.add_style :num_fmt => 20
sheet.add_row [
"Length"
], :style => title
@tasks.each do |task|
sheet.add_row [
"=#{task.duration}/1440"
], :style => [
time
]
end
range_amount = "D2:D#{@tasks.size+1}"
sheet.add_row ["=SUM(#{range_amount})", :style => [time_title]
end
Я надеюсь, что это поможет кому-то другому
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.