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