3

ユーザーがデータを入力してアップロードできるように、テンプレートの Excel シートをエクスポートしたいと考えています。

エクスポートされたシートで、列の値にいくつかの検証またはルールを適用したいと考えています。そのため、ユーザーは、適用されるルールに従って値を入力することができます。これは、数字または 4 ~ 5 個の一意の値 (たとえば、色 - 青、緑、黒のみ) のみにすることができます。

これまで、Roo と Spreadsheet gem のドキュメントを調べて、列のルールを定義する方法を見つけましたが、何も見つかりませんでした。今のところ、ユーザーがアップロードしたときにシートを検証し、無効な値が挿入された場合はエラーを表示します。

このような解決策を探しています-POIを使用して生成されたExcelシートで依存ドロップダウンを作成する方法は?

どんな助けでも大歓迎です。

4

1 に答える 1

3

Axlsx gemを使用してこの要件を解決しました。

Axlsx は優れた機能を提供します。検証用の gem have 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 に答える