2017-02-23 6 views
1

Ich verwende axlsx gem, um Daten in Excel von Ruby/Rails zu exportieren.Axlsx Ruby Gem - Erstellen eines Dropdown-Menüs mit benutzerdefinierten Werten

Ich brauche einen Drop-Down mit benutzerdefinierten Werten addieren - Wert1, Wert2, Wert3 usw. Im Folgenden ist der Code, den ich

versuchte
excel = Axlsx::Package.new 
wb = excel.workbook 

wb.add_worksheet(name: "sample_sheet") do |sheet| 
    sheet.add_data_validation("A1:A100", { 
     :type => :list, 
     :formula1 => "value1 value2 value3", 
     :showDropDown => false, 
     :showErrorMessage => true, 
     :errorTitle => '', 
     :error => 'Please use the dropdown selector to choose the value', 
     :errorStyle => :stop, 
     :showInputMessage => true, 
     :prompt => 'Choose the value from the dropdown' 
    }) 
end 

excel.serialize('sample_excel.xlsx') 

Der Code erstellt die Excel, aber wenn ich es öffne bekomme ich diese Excel-Fehler excel error Die Werte werden nicht zum Dropdown-Menü hinzugefügt.

Alternativ

:formula1 => "B1:B2" 

funktioniert gut, fügt sie den Inhalt von B1 und B2 auf das Dropdown-Menü. In meinem Anwendungsfall müssen benutzerdefinierte Werte hinzugefügt werden, sie werden nicht im Excel-Blatt gespeichert.

Wie können benutzerdefinierte Werte im Dropdown-Menü für die Datenüberprüfung hinzugefügt werden? Freundlich helfen.

+0

Haben Sie es lösen? –

+0

@RareFever Kasse meine Antwort. –

Antwort

1

Es scheint keine Möglichkeit zu geben, Werte in Ihrer Formel anzugeben, aber die folgende Lösung wird in Ihrem Fall funktionieren.

Auf der .axlsx Datei ein anderes Blatt fügen Sie Ihre eigenen Werte zu halten:

months_sheet = wb.add_worksheet(:name => 'DropDown Values') { |ws| ws.sheet_protection.password = 'pa55w0rd' } 
months_sheet.add_row ['value1', 'value2', 'value3'] 

dann Ihren Code ändern:

wb.add_worksheet(name: "sample_sheet") do |sheet| 
    sheet.add_data_validation("A1:A100", { 
     :type => :list, 
     :formula1 => "'DropDown Values'!A$1:C$1", 
     :showDropDown => false, 
     :showErrorMessage => true, 
     :errorTitle => '', 
     :error => 'Please use the dropdown selector to choose the value', 
     :errorStyle => :stop, 
     :showInputMessage => true, 
     :prompt => 'Choose the value from the dropdown' 
    }) 
end 

Die $ s bei A$1:A$100 sind necessary.

+0

Danke Alexander. Das hatte ich mir schon überlegt, aber ich kann kein zusätzliches Blatt verwenden oder die Werte woanders verstecken. Ich möchte wissen, ob Axlsx Gem atall die Verwendung von benutzerdefinierten Werten in Dropdown ermöglicht. –

Verwandte Themen