使用axlsx电子表格ruby gem将单元格格式化为文本?

pla*_*rms 10 ruby axlsx

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

谁知道怎么做到这一点?

ran*_*dym 34

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

就像是:

worksheet.add_row ['0012342'], :types => [:string]
Run Code Online (Sandbox Code Playgroud)

如果你需要任何帮助,那就抓住我的irc(JST)吧.

最好

randym

编辑 -

我在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
Run Code Online (Sandbox Code Playgroud)

https://github.com/randym/axlsx/blob/master/examples/example.rb#L349


小智 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
Run Code Online (Sandbox Code Playgroud)