私はaxlsxrubygemを使用してExcel互換.xlsx
ファイルを作成しています。自動タイプ検出によって生成されたセルタイプをオーバーライドする方法がわかりません。タイプのActiveRecordモデル属性の場合string
、gemはExcelセル形式をGeneralに設定していますが、Textを明示的に使用する必要があります。そうすれば、郵便番号などから先行ゼロを取り除くことを避けることができます。
誰かがこれを達成する方法を知っていますか?
私はaxlsxrubygemを使用してExcel互換.xlsx
ファイルを作成しています。自動タイプ検出によって生成されたセルタイプをオーバーライドする方法がわかりません。タイプのActiveRecordモデル属性の場合string
、gemはExcelセル形式をGeneralに設定していますが、Textを明示的に使用する必要があります。そうすれば、郵便番号などから先行ゼロを取り除くことを避けることができます。
誰かがこれを達成する方法を知っていますか?
行の追加のtypesオプションを使用して、データのタイプをオーバーライドできます。
何かのようなもの:
worksheet.add_row ['0012342'], :types => [:string]
それを機能させるために助けが必要な場合は、irc(JST)で私をつかんでください。
一番
randym
この例をリポジトリのexamples/example.rbに追加しました。
wb.add_worksheet(:name => "Override Data Type") do |sheet|
sheet.add_row ['dont eat my zeros!', '0088'] , :types => [nil, :string]
end
https://github.com/randym/axlsx/blob/master/examples/example.rb#L349
format_code:'@'が機能します。以下のコードを参照してください。
def default_data_type_as_string
@xlsx_package = Axlsx::Package.new
@workbook = @xlsx_package.workbook
@worksheet = @workbook.add_worksheet(:name => "Introduction")
default_style = @workbook.styles.add_style({ format_code: '@' })
row_data_array = ['1', '2%', '3$']
@worksheet.add_row row_data_array, :style => [nil, default_style, nil]
@xlsx_package.serialize('default_data_type_as_string.xlsx')
end
gemバージョンgem 'axlsx', '2.1.0.pre'
の場合gem 'axlsx_rails'
、ファイル列をテキストタイプにするには、スタイルとタイプの両方を指定する必要があります
default_style = worksheet.styles.add_style({ format_code: '@' })
worksheet.add_row ['0012687'], :types => [:string], :style => [default_style]