我正在使用axlsx ruby gem来创建与 Excel 兼容的.xlsx
文件。我不知道如何覆盖由它的自动类型检测生成的单元格类型。对于类型string
的 Active Record 模型属性,gem 将 Excel 单元格格式设置为 General,但我希望它明确使用 Text。这样我就可以避免从邮政编码等中去除前导零。
有谁知道如何做到这一点?
我正在使用axlsx ruby gem来创建与 Excel 兼容的.xlsx
文件。我不知道如何覆盖由它的自动类型检测生成的单元格类型。对于类型string
的 Active Record 模型属性,gem 将 Excel 单元格格式设置为 General,但我希望它明确使用 Text。这样我就可以避免从邮政编码等中去除前导零。
有谁知道如何做到这一点?
您可以使用添加行上的类型选项覆盖数据类型。
就像是:
worksheet.add_row ['0012342'], :types => [:string]
如果您需要任何帮助以使其正常工作,请在 irc (JST) 上抓住我。
最好的
随机的
我在 repo 中的 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]