【问题标题】:Data validation for each cell to check whether the value is available or not using EPplus使用 EPplus 对每个单元格进行数据验证以检查该值是否可用
【发布时间】:2017-06-08 11:18:32
【问题描述】:

我正在使用 Epplus 上传文件。我有两张 .xlsx 格式的工作表。我想确保每个单元格都有价值。例如,在我的 excel 中,我有下拉框。如果用户在第一张工作表中有详细信息第二张表是空的。但是这个空表只有一个值,通过使用这个下拉菜单错误地添加到表中。所以在这个阶段它会在进入这个循环时显示对象空引用错误

    for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++)
     {

         if (int.TryParse(s.Cells[rowIterator, 1].Value.ToString(), out n) && int.TryParse(s.Cells[rowIterator, 2].Value.ToString(), out n))
        {
          Pss.Pbr = Convert.ToInt32(s.Cells[rowIterator, 1].Value);
          Pss.Amount = Convert.ToInt32(s.Cells[rowIterator, 2].Value);
         Ps.Add(Pss);

        }
}

如何验证所有列和行都有值

【问题讨论】:

标签: c# asp.net-mvc excel epplus


【解决方案1】:

在循环中,检查单元格是否不为空且不为空,如下所示:

bool allRangeHasValue=true;
for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++)
{
    for(int col =1;col<=s.Dimension.End.Column;col++)
    {

      if(String.IsNullOrWhiteSpace(s.Cells[rowIterator, col]?.Value?.ToString())
      {
          allRangeHasValue=false;
          break;
      }
    }
    if(!allRangeHasValue)
    {
      break;
    }
}

编辑: 根据您的评论,您可以执行以下操作: Edit2:由于您使用的是 TryParse,因此无需再次解析,TryParse 返回 out 变量中的值。

for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++)
 {
     int n1;
     int n2;
     if (!string.IsNullOrWhiteSpace(s.Cells[rowIterator, 1]?.Value?.ToString()) &&
         !string.IsNullOrWhiteSpace(s.Cells[rowIterator, 2]?.Value?.ToString()) &&
         int.TryParse(s.Cells[rowIterator, 1].Value.ToString(), out n1) && 
         int.TryParse(s.Cells[rowIterator, 2].Value.ToString(), out n2))
    {
      Pss.Pbr = n1;
      Pss.Amount = n2;
      Ps.Add(Pss);

    }
}

【讨论】:

    猜你喜欢
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2018-06-09
    • 2017-08-04
    相关资源
    最近更新 更多