Axlsx Gem:Ruby - 创建下拉菜单

Rya*_*mes 2 ruby excel axlsx dropdown

wb.add_worksheet(name: 'Report') do |sheet|
  sheet.add_data_validation("D25", {
    :type => :list,
    :formula1 => 'list!D11:D17',
    :showDropDown => false,
    :showInputMessage => true,
    :promptTitle => 'blah blah',
    :prompt => 'Please select a valid blah'
    })
end
Run Code Online (Sandbox Code Playgroud)

我不知道如何填充下拉列表。该模板显示了一个插入符号,它告诉我它知道我希望这是一个下拉菜单。

knu*_*nut 6

您可以formula1 => 'list!D11:D17'参考另一个名为 的工作表list

如果您仅引用,D11:D17则会从所选区域获取值:

require 'axlsx'

Axlsx::Package.new do |p|
  wb = p.workbook
    wb.add_worksheet(name: 'Report') do |sheet|
      sheet.add_data_validation("A10", {
        :type => :list,
        :formula1 => 'A1:A9',
        :showDropDown => false,
        :showInputMessage => true,
        :promptTitle => 'blah blah',
        :prompt => 'Please select a valid blah'
        })
    end
      p.serialize('simple.xlsx')
      puts "Wrote simple.xlsx"
end
Run Code Online (Sandbox Code Playgroud)

您可以使用您的list!-reference,但是您必须命名您的工作表list

例子:

require 'axlsx'

Axlsx::Package.new do |p|
  wb = p.workbook
    wb.add_worksheet(name: 'list') do |sheet|
      1.upto(10){|i| sheet.add_row([i])}
    end

    wb.add_worksheet(name: 'Report') do |sheet|
      sheet.add_data_validation("A1", {
        :type => :list,
        :formula1 => 'list!A1:A9',
        :showDropDown => false,
        :showInputMessage => true,
        :promptTitle => 'blah blah',
        :prompt => 'Please select a valid blah'
        })
    end
      p.serialize('simple.xlsx')
      puts "Wrote simple.xlsx"
end
Run Code Online (Sandbox Code Playgroud)