我试图在创建 Excel 时添加一个下拉列表(列表验证),我已经找到了将其添加到整列的方法,但我的情况不同,因为我只将验证添加到除第一行和第二行之外的整列行。
这是我迄今为止尝试过的:
public MemoryStream GetExcelSheet()
{
using (var package = new ExcelPackage())
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Test");
var val = worksheet.DataValidations.AddListValidation("A:A");
val.Formula.Values.Add("Male");
val.Formula.Values.Add("Female");
val.ShowErrorMessage = true;
worksheet.Cells["A1"].Formula = null;
var stream = new MemoryStream(package.GetAsByteArray());
return stream;
}
}
我正在尝试取消它:
worksheet.Cells["A1"].Formula = null;
希望它会删除某个单元格上的验证,但它不起作用。
我也尝试过
var val = worksheet.DataValidations.AddListValidation("A2:A");
指定起始行号,但生成的 Excel 文件已损坏。
请问有什么帮助吗?
最佳答案
ExcelCellBase有一个适当的扩展方法来从范围中获取地址字符串:
public static string GetAddress(int FromRow, int FromColumn, int ToRow, int ToColumn)
ExcelPackage有一个公共(public) const MaxRows
(1048576),您可以将其用于 ToRow
参数。
将其组合到您的案例中:
var range = ExcelRange.GetAddress(2, 1, ExcelPackage.MaxRows, 1);
var val = worksheet.DataValidations.AddListValidation(range);
关于excel - 将列表验证添加到除前两行之外的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764226/