13

我正在使用axlsx ruby​​ gem来创建与 Excel 兼容的.xlsx文件。我不知道如何覆盖由它的自动类型检测生成的单元格类型。对于类型string的 Active Record 模型属性,gem 将 Excel 单元格格式设置为 General,但我希望它明确使用 Text。这样我就可以避免从邮政编码等中去除前导零。

有谁知道如何做到这一点?

4

3 回答 3

40

您可以使用添加行上的类型选项覆盖数据类型。

就像是:

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

于 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 回答