RubyGems axlsx создает список ячеек, представляющих время, и добавляет его программно
Я постараюсь максимально упростить этот вопрос. Я создаю файл 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
Я надеюсь, что это помогает кому-то еще