这个问题在另一篇文章的基础上回答:但是对于我的情况,我无法将验证值硬编码到工作表中,而是根据数据库的内容从数据库中提取它们。单元格,需要对每行的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);
}
}
}
答案 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, ... ]