13

私はaxlsxrubygemを使用してExcel互換.xlsxファイルを作成しています。自動タイプ検出によって生成されたセルタイプをオーバーライドする方法がわかりません。タイプのActiveRecordモデル属性の場合string、gemはExcelセル形式をGeneralに設定していますが、Textを明示的に使用する必要があります。そうすれば、郵便番号などから先行ゼロを取り除くことを避けることができます。

誰かがこれを達成する方法を知っていますか?

4

3 に答える 3

40

行の追加の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

于 2012-11-28T00:56:36.853 に答える
6

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
于 2017-09-18T18:23:36.897 に答える
1

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]
于 2021-08-23T20:15:32.410 に答える