导出Excel(xls或xlsx或CSV)工作表,并在列上应用validation/规则
我想导出一个模板的Excel工作表,以便用户可以填写它,并可以上传他们的数据。
在导出的工作表中,我想对列值进行一些validation或规则 。 因此,用户只能按照所应用的规则来填充值,其可以是仅数字或4-5个唯一值(例如颜色 – 仅蓝色,绿色,黑色)。
到目前为止,我已经通过Roo和Spreadsheet gem的文档,find任何方式来定义列的规则,但没有find任何东西。 现在只需在用户上传时validation工作表,如果插入了无效值,则显示错误。
寻找像这样的解决scheme – 如何在使用POI生成的Excel表格中创build相关的下拉菜单?
欢迎任何帮助。
使用Axlsx gem解决了这个需求。
Axlsx提供了很好的function。 对于validationgem有Axlsx::DataValidation
。
它允许为数据types添加validation:whole, :decimal, :date, :time, :textLength, :list, :custom
。 对于每个人也可以指定公式。
为了仅获得颜色列的几个颜色值,我添加了validation并导出了工作表保存工作表并导出如下:
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'
到目前为止,我只能指定有限范围的行来validation在工作表中应用。
如果有人可以添加如何指定整列进行validation,这个答案将是一个完美的解决scheme。
谢谢。