使用EPplus检查每个单元的数据是否可用

我正在使用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); } } 

如何validation所有列和行都有值

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

 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,你不需要再parsing,TryParse返回outvariables中的值。

 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); } }