3

我想导出模板 Excel 工作表,以便用户可以填写并上传他们的数据。

在导出的工作表中,我想对列值进行一些验证规则。因此,用户只能根据应用的规则填充值,该值只能是数字或 4-5 个唯一值(例如颜色 - 仅限蓝色、绿色、黑色)。

到目前为止,我已经浏览了 Roo 和 Spreadsheet gem 的文档,以找到任何方法来定义列上的规则,但没有找到任何东西。现在只是在用户上传时验证工作表,如果插入无效值则显示错误。

寻找类似的解决方案 -如何在使用 POI 生成的 excel 表中创建相关下拉列表?

欢迎任何帮助。

4

1 回答 1

3

使用Axlsx gem解决了这个要求。

Axlsx 提供了很棒的功能。对于验证 gem 有Axlsx::DataValidation.

它允许为数据类型添加验证::whole, :decimal, :date, :time, :textLength, :list, :custom. 对于每一个也可以指定公式。

为了只获得颜色列的几个颜色值,我添加了验证并导出了工作表保存工作表并导出如下:

p = Axlsx::Package.new

p.workbook.add_worksheet(name: "dropdown") do |ws|
  ws.add_row ["Color"]
  ws.add_data_validation("A2:A1000", {
    :type => :list,
    :formula1 => 'Red orange Blue White',
    :showDropDown => false,
    :showErrorMessage => true,
    :errorTitle => '',
    :error => 'Please use the dropdown selector to choose a valid color',
    :errorStyle => :stop,
    :showInputMessage => true,
    :promptTitle => 'Color',
    :prompt => 'Please select a valid color'})
end

p.serialize 'data_validation.xlsx'

到目前为止,我只能指定有限的行范围以在工作表中应用验证。

如果有人可以添加如何指定整列进行验证,这个答案将是一个完美的解决方案。

谢谢。

于 2015-02-11T04:10:15.170 回答