如何解决如何一次在验证列表中添加值?
我正在尝试向IExcelDataValidationList
添加值,但是我现在的操作方式并不十分有效。
我需要在工作表中创建许多行,并为这些行中的每行填充特定单元格的列表。当我有很多值要添加到列表中时,这将永远耗费时间。
for (var x = headerRowIndex + 1; x < 1000; x++)
{
var address = ExcelCellBase.TranslateFromr1C1($"R{x}C{colIndex}",0);
IExcelDataValidationList list = mainWorksheet.DataValidations.AddListValidation(address);
foreach (var e in values)
{
list.Formula.Values.Add(e);
}
}
如果values
包含很多选项,您会花很长时间。
这是我尝试过的:
List<string> validationValues = new List<string>();
validationValues = values.ToList();
for (var x = headerRowIndex + 1; x < 1000; x++)
{
var address = ExcelCellBase.TranslateFromr1C1($"R{x}C{colIndex}",0);
var list = mainWorksheet.DataValidations.AddListValidation(address);
((List<string>)list.Formula.Values).AddRange(validationValues);
}
因此,我尝试一次将所有值添加到列表中。这样编译就可以了,但是我遇到了这个异常:
system.invalidCastException:'无法转换类型的对象 输入“ DataValidationList” 'System.Collections.Generic.List`1 [System.String]'。'
我尝试过直接投射到DataValidationList
,但它是私下定义的,只能由EPPlus本身访问。
有什么想法吗?
解决方法
不是为每个单元格创建IExcelDataValidationList,而是为整个列创建一个(地址可以包括单元格范围):
var address = ExcelCellBase.GetAddress(headerRowIndex + 1,colIndex,headerRowIndex + 1000,true); // whole column
IExcelDataValidationList list = mainWorksheet.DataValidations.AddListValidation(address);
foreach (var e in values)
{
list.Formula.Values.Add(e);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。