【问题标题】:Unable to freeze the header pane using axlsx with Rails无法使用带有 Rails 的 axlsx 冻结标题窗格
【发布时间】:2015-08-21 20:21:14
【问题描述】:

我正在使用带有导轨的 Axlsx gem 来创建 Excel 工作表。我需要修复和冻结标题。即使我们向下滚动,标题也应该始终可见。 轨道版本 3.2.1 宝石'axlsx'

有什么帮助吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 gem axlsx


    【解决方案1】:

    你可以像这个例子一样冻结窗格:

      require 'axlsx'
      XLSX_temp = 'simple.xlsx'
    
      Axlsx::Package.new do |p|
          p.workbook.add_worksheet(:name => 'DATA') do |sheet|
            sheet.add_row(%w{key col1 col2 col3 col4 col5})
            #Fix first line and column
            sheet.sheet_view.pane do |pane|
              pane.top_left_cell = "B2"
              pane.state = :frozen_split
              pane.y_split = 1
              pane.x_split = 1
              pane.active_pane = :bottom_right
            end
    
            10.times{
              sheet.add_row(%w{1 2 3 4 5 6})
            }
          end    
    
          puts "Write %s" % XLSX_temp
          p.serialize(XLSX_temp)
      end
    

    结果有一个固定的第一列和第一行:

    pane.x_split = 0 只有第一行是固定的。

    【讨论】:

    • 我们可以冻结一些起始行不是第一行的行吗?您的代码将冻结第一行但我想要冻结从第 3 行开始的 4 行,即第 3、4、5 和 6 行。
    • 这在 Excel 中可行吗?我自己无法实际检查,但我认为 excel 只允许从顶部修复行。
    • 是的,它在 Excel 中是允许的。 Google 电子表格有这个功能,我认为 MS office 也有这个功能。
    【解决方案2】:

    在此处尝试 axlsx 示例页面:

    https://github.com/randym/axlsx/blob/master/examples/example.rb#L575-L581

    # Repeat printing of header rows.
    #```ruby
    if examples.include? :repeated_header
      wb.add_worksheet(:name => "repeated header") do |sheet|
        sheet.add_row %w(These Column Header Will Render On Every Printed Sheet)
        200.times { sheet.add_row %w(1 2 3 4 5 6 7 8) }
        wb.add_defined_name("'repeated header'!$1:$1", :local_sheet_id => sheet.index, :name => '_xlnm.Print_Titles')
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-01
      • 2014-05-21
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多