Создание листа excel с выпадающим списком с помощью epplus
Дорогие,
я работаю над веб-приложением Mvc. Я хочу создать новый лист excel с двумя выпадающими списками, заполненными данными из базы данных. Я хочу, чтобы второй выпадающий список зависел от изменения выбора первого. Я уже создаю файл и заполняю выпадающий список, но не могу найти способ сделать их зависимыми. Есть какие-нибудь подсказки, как это сделать?
вот мой код
public void ExportToXlsx(Stream stream) { if (stream == null) throw new ArgumentNullException("stream"); // ok, we can run the real code of the sample now using (var xlPackage = new ExcelPackage(stream)) { // get handle to the existing worksheet#region #region MyRegion Create Main File var worksheet = xlPackage.Workbook.Worksheets.Add("Beneficiary"); var properties = new string[] { " الاسم "," رقم الهوية " ," رقم الجوال "," نوع المستفيد "," IBAN " ," نوع الوظيفة "," الرتبة/ المرتبة " }; for (var i = 0; i < properties.Length; i++) { worksheet.Cells[1, i + 1].Value = properties[i]; worksheet.Cells[1, i + 1].Style.Fill.PatternType = ExcelFillStyle.Solid; worksheet.Cells[1, i + 1].Style.Fill.BackgroundColor.SetColor(Color.AliceBlue); worksheet.Cells[1, i + 1].Style.Font.Bold = true; } worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); worksheet.View.RightToLeft = true; #endregion #region Ismilitry List ExcelWorksheet isMilitryddList = xlPackage.Workbook.Worksheets.Add("IsMilitry"); var ismilitryValues = new string[] { "مدنى","عسكرى" ,"أخرى" }; var valismilitry = worksheet.DataValidations.AddListValidation(worksheet.Cells[2, 4, 10000, 4].Address); for (int index = 1; index <= ismilitryValues.Length; index++) { isMilitryddList.Cells[1,index].Value = ismilitryValues[index - 1]; } var addressismilitry = isMilitryddList.Cells[1, 1, 1, ismilitryValues.Count()].Address; var arrismilitry = addressismilitry.Split(':'); var ismilitrychar1 = arrismilitry[0][0]; var ismilitrynum1 = arrismilitry[0].Trim(ismilitrychar1); var ismilitrychar2 = arrismilitry[1][0]; var ismilitrynum2 = arrismilitry[1].Trim(ismilitrychar2); valismilitry.Formula.ExcelFormula = string.Format("=IsMilitry!${0}${1}:${2}${3}", ismilitrychar1, ismilitrynum1, ismilitrychar2, ismilitrynum2); valismilitry.ShowErrorMessage = true; valismilitry.Error = "Select from List of Values ..."; #endregion #region Ranktype List ExcelWorksheet ddList = xlPackage.Workbook.Worksheets.Add("DropDownList"); var brokerBranchs = new RankTypeBl().SelectAllRankTypes(); var val = worksheet.DataValidations.AddListValidation(worksheet.Cells[2, 6, 10000, 6].Address); for (int index = 1; index <= brokerBranchs.Count; index++) { ddList.Cells[index, 1].Value = brokerBranchs[index - 1].Name; } 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); val.Formula.ExcelFormula = string.Format("=DropDownList!${0}${1}:${2}${3}", char1, num1, char2, num2); val.ShowErrorMessage = true; val.Error = "Select from List of Values ..."; #endregion #region rank list ExcelWorksheet ddList1 = xlPackage.Workbook.Worksheets.Add("ranks"); var ranks = new BeneficiaryRankBl().SelectAllBeneficiaryRank(); var val1 = worksheet.DataValidations.AddListValidation(worksheet.Cells[2, 7, 10000, 7].Address); for (int index = 1; index <= ranks.Count; index++) { ddList1.Cells[index, 1].Value = ranks[index - 1].ArName; } var address1 = ddList1.Cells[1, 1, ranks.Count(), 1].Address; var arr1 = address1.Split(':'); var char11 = arr1[0][0]; var num11 = arr1[0].Trim(char11); var char22 = arr1[1][0]; var num21 = arr1[1].Trim(char22); val1.Formula.ExcelFormula = string.Format("=ranks!${0}${1}:${2}${3}", char11, num11, char22, num21); val1.ShowErrorMessage = true; val1.Error = "Select from List of Values ..."; #endregion xlPackage.Save(); } }
Juniper
Вы пробовали это? http://stackoverflow.com/questions/20259692/epplus-number-of-drop-down-items-limitation-in-excel-file