2013-11-28 9 views
5

Rozważmy następujący kod:liczba Epplus z rozwijanej pozycji ograniczeń w programie Excel plik

var dropDown = sheet.DataValidations.AddListValidation(cells[2, colIndex, maxCol, colIndex].Address); 
       foreach (var bb in brokerBranchs) 
       { 
        dropDown.Formula.Values.Add(bb.Title); 
       } 

Z 29 elementów rozwijanej wszystko jest OK i stworzył excel plik działa dobrze, ale jak liczba elementów przekracza 29, otwierając utworzony plik pokazuje następujący błąd: enter image description here Otwarcie uszkodzonego pliku wyniku powoduje odrzucenie wszystkich rozwijanych elementów powiązanych ze wszystkimi kolumnami. Jakie jest możliwe rozwiązanie tego problemu? Każda pomoc zostanie doceniona.

+2

Uważam, że to doskonałe ograniczenie, a nie Epplus. –

+1

@bradciven akceptuję –

+3

@ShahroozJefri ㇱ Zgadzam się, że zgadzasz się z @ bradciven –

Odpowiedz

2

należy dodać nowy arkusz, aby dodać rozwijanej poz wstawić do tego arkusza

ExcelWorksheet ddList = excelPackage.Workbook.Worksheets.Add("DropDownList"); 

teraz dodać dane do ddList w pierwszej kolumnie

var brokerBranchs = accountingUnitOfWork.BrokerServiceAccessor.GetBrokerBranchByBrokerId(firmId).OrderBy(x => x.Title).ToList(); 
      var val = sheet.DataValidations.AddListValidation(cells[2, colIndex, maxCol, colIndex].Address); 
      for (int index = 1; index <= brokerBranchs.Count; index++) 
      { 
       ddList.Cells[index, 1].Value = brokerBranchs[index - 1].Title; 
      } 

teraz utworzyć adres do wykorzystania we wzorze

var address = ddList.Cells[1, 1, brokerBranchs.Count(), 1].Address.ToString(); 
var arr = address.Split(':'); 
var char1 = arr[0][0]; 
var num1 = arr[0].Trim(char1); 
var char2 = arr[1][0]; 
var num2 = arr[1].Trim(char2); 

teraz użyj adresu we wzorze

val.Formula.ExcelFormula = string.Format("=DropDownList!${0}${1}:${2}${3}", char1,   num1, char2, num2); 
val.ShowErrorMessage = true; 
val.Error = "Select from List of Values ...";