2016-04-29 9 views
6
Sheet.get_Range(
"D2", 
string.Format("D{0}", MAX_ROWS)).Validation 
    .Add(E.XlDVType.xlValidateList, 
     Type.Missing, 
     E.XlFormatConditionOperator.xlBetween, 
     string.Join(",", CountryCollection.Select(x=>x.CountryName.Replace(",",")).ToArray())); 

Il codice sopra riportato consente di generare un elenco a discesa in un file excel appena aperto, ma una volta salvato il foglio, il menu a discesa non sarà più disponibile. Le modifiche apportate dall'utente rimarranno lì, ma l'elenco a discesa scomparirà. Qualche idea?Il menu a discesa di Microsoft Excel è stato utilizzato dopo il salvataggio?

AGGIORNAMENTI:

Attualmente sospettare la ragione per cui il DropDownList è andato è dovuto al codice qui sotto

void WB_BeforeSave(bool SaveAsUI, ref bool Cancel) 
{ 
    workSheet.get_Range(START_CELL, string.Format(END_CELL, MAX_ROWS)).Validation.Delete(); 
} 

Ho provato commentato il codice di cui sopra in modo che la convalida non sarebbe cancellato tuttavia, quando provo ad aprire manualmente il foglio Excel, Microsoft Excel rileva che la convalida è un contenuto illeggibile e la elimina automaticamente.

+4

È necessario fornire più codice sorgente per aiutare le persone a identificare il problema. –

+3

Si prega di fornire un [MCVE] –

+0

anche condividere quale libreria excel si sta usando – Patel

risposta

0

Provare a salvare Excel nel formato .xlsx, alcuni comportamenti non avranno effetto se il formato file corretto non è selezionato.

+0

Non funziona in nessuno dei due tipi' .xlsx' o '.xls' –

+0

che funziona bene quando li salvi manualmente? – tharif

+0

Sì, se creo manualmente un elenco a discesa tramite il metodo 'validation' e li salvo manualmente, il dropdownlist verrà mantenuto e accessibile. –

Problemi correlati