1
我需要在輸出電子表格文檔中編寫一個字符串,如「001」作爲字符串而不是數字,因此值顯示爲「001」,而不是「1」。如何使用AXLSX庫?在ruby AXLSX庫中寫入一個數字作爲字符串
我需要在輸出電子表格文檔中編寫一個字符串,如「001」作爲字符串而不是數字,因此值顯示爲「001」,而不是「1」。如何使用AXLSX庫?在ruby AXLSX庫中寫入一個數字作爲字符串
儘管您可以使用rjust
提到的格式化紅寶石中的字符串。這對Excel文件沒有幫助。在axlsx
中,您可以在添加行時指定數據類型,以便axlsx
不會嘗試爲您轉換它,例如
pkg = Axlsx::Package.new
wb = pkg.workbook
wb.add_worksheet do |sheet|
sheet.add_row ["001","001","001"], types: [:string,:integer,nil]
end
pkg.serialize('/test.xlsx')
這將產生一個電子表格,看起來像
|001| 1| 1|
注:第二個「001」轉變,因爲我沒有指定類型,並axlsx
決定是使用下面的一些方法在Cell
。
def cell_type_from_value(v)
if v.is_a?(Date)
:date
elsif v.is_a?(Time)
:time
elsif v.is_a?(TrueClass) || v.is_a?(FalseClass)
:boolean
elsif v.to_s =~ /\A[+-]?\d+?\Z/ #numeric
:integer
elsif v.to_s =~ /\A[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\Z/ #float
:float
# \A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])
# T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?
# (Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?\Z
elsif v.to_s =~/\A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?\Z/
:iso_8601
else
:string
end
end
基於該方法的結果,它再「投下」在你的情況下,使用to_i
值。
謝謝!有效。 – mizubasho