excel - 将列表验证添加到除前两行之外的列

标签 excel validation c#-4.0 epplus epplus-4

我试图在创建 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/

相关文章:

vba - 检查是否应用了条件格式

java - Spring Validation - 如何在我的 Controller 中检索 errors.rejectValue?

mysql - 如何根据另一个表验证字段的唯一性

c# - 如何使用 NUnit 确保 Debug.Assert 正确触发

c# - asp.net中如何使用线程?

asp.net-mvc - Controller 返回不正确的日期时间格式

excel - 如何使用来自不同工作簿的子

excel - 基于多变量的 VBA 案例选择

vba - 将 +2 添加到任何数字 (VBA)

validation - 渐变的 CSS2 验证错误