我想导出一个模板Excel表格,以便用户可以填写它,并可以上传他们的数据。
在导出的工作表中,我希望将一些验证或规则放在列值上。因此,用户只能按照所应用的规则填充值,这些规则只能是数字或4-5唯一值(例如颜色-蓝色、绿色、黑色)。
到目前为止,我已经阅读了Roo和电子表格gem的文档,找到了定义列规则的任何方法,但是没有找到任何东西。现在,只要在用户上传时验证工作表,如果插入无效值,则显示错误。
寻找类似这样的解决方案- 如何在使用POI生成的excel表中创建相关的下拉列表?
欢迎任何帮助。
发布于 2015-02-11 04:10:15
使用Axlsx宝石解决了这一需求。
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'到目前为止,我只能指定有限的行范围,以便在工作表中应用验证。
如果有人可以添加如何指定整个列进行验证,这个答案将是一个完美的解决方案。
谢谢。
https://stackoverflow.com/questions/28365618
复制相似问题