EPPLUS:DataValidation列表的长度不能超过255个字符

时间:2017-05-17 16:30:39

标签: c# excel epplus

这个问题在另一篇文章的基础上回答:enter image description here但是对于我的情况,我无法将验证值硬编码到工作表中,而是根据数据库的内容从数据库中提取它们。单元格,需要对每行的4列进行单独验证。有没有办法实现这一目标?提前谢谢。

    // Data Validations //
            // Product Validation // 
            for (int i = 2; i < rowCount; i++)
            {
                var val = ws.DataValidations.AddListValidation(ws.Cells[i, 5].Address);
                val.ShowErrorMessage = true;
                val.ErrorTitle = "Entry was invalid.";
                val.Error = "Please choose options from the drop down only.";

                var ticketEntity = ticketQueryable.Where(o => o.TTSTicketNumber == ws.Cells[i, 3].Value.ToString()).Single<CustCurrentTicketEntity>();

                var prodIds = prodExtQueryable.Where(p => p.ZoneId == ticketEntity.ZoneId && p.TicketTypeId == ticketEntity.TicketTypeId);

                if (ticketEntity != null)
                {
                    var prodIdsList = new List<int>();
                    foreach (var prodId in prodIds)
                    {
                        prodIdsList.Add(prodId.ProductId);
                    }
                    var ProductList = ProductCache.Instance.AllProducts.Where(p => prodIdsList.Contains(p.ProductId)).Select(p => new SelectListItem() { Value = p.ProductId.ToString(), Text = p.Name });

                    foreach (var Result in ProductList)
                    {
                        var product = Result.Text;
                        val.Formula.Values.Add(product);
                    }
                }
            }

1 个答案:

答案 0 :(得分:0)

所以是的,因为Ernie说我所做的是添加第二张&#34; ProductValidations&#34;并将其设置为隐藏(取消隐藏它以检查它是否正常工作)。然后我从DataTable加载我的数据,然后添加一些基本的EPPLUS格式。然后,我将Rows和Insert值迭代到&#34; ProductValidations&#34;每个单元格的表格。接下来,我将我的列号转换为正确的Excel列字母名称(A,AC,BCE等)然后我创建一个字符串作为Excel公式传回,以确定&#34; ProductValidations&#34;中的正确范围的单元格。片。对于从服务器下载Excel文件时出现问题的任何人来说,这种guid方法对我来说也很合适。

id = [1, 2, 3, ... ]
value_1 = [11, 32, 41, ... ]
value_2 = [21, 41, 84, ... ]