使用电子表格gem自动调整excel列宽

时间:2013-08-13 15:55:01

标签: ruby-on-rails

我使用Ruby Spreadsheet gem将rails应用程序中的数据导出到excel,有没有办法让列的大小自动调整到内容的大小?

2 个答案:

答案 0 :(得分:7)

不是我知道的。我必须通过跟踪每列中字符串的长度然后获取最大长度并向其添加几个单位,然后将列的宽度设置为该计算值来手动完成。

account_name_lengths = []
# generate each row
accounts.each do |account|
  account_name_lengths << account.name.length

  # add to sheet here
end

sheet.column(0).width = account_name_lengths.max + 5

答案 1 :(得分:0)

要使所有列自动拟合

def auto_fit(sheet)
  (0...sheet.column_count).each do |col_idx|
    column = sheet.column(col_idx)
    column.width = column.each_with_index.map do |cell, row|
      chars = cell.present? ? cell.to_s.strip.split('').count + 4 : 1
      ratio = sheet.row(row).format(col_idx).font.size / 10
      (chars * ratio).round
    end.max
  end
end