[英]RubyGems axlsx create a list of cells that represent time and add it programmatically
我將盡力簡化這個問題。 我正在用axlsx生成一個xls文件,並且在文件內部有一列表示此格式為[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)
該范圍,最后一個單元格的值為=SUM(D2:D174)
但顯示為0
,如果我將格式更改為[h]:mm:ss
則其更改為0:00:00
謝謝
我的錯誤是嘗試隨着時間操縱字符串,這是我的解決方法
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
希望對別人有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.