So atm im importing an excel doc into my project. I’m then using if statements to display the appropriate error message if any columns in the spreadsheet are empty. My code is working but it just doesn’t look tidy. Is there anyway to refactor all the if statements into a loop to display the error message, possibly another method which checks all?? checkIfColumnIsEmpty is a bool method which returns true if the column is empty
//if either column 0 and 1 are empty && column 2,3,4 and 5 are not
if (!checkIfColumnisEmpty(r.ItemArray[0]) || !checkIfColumnisEmpty(r.ItemArray[1])
&& checkIfColumnisEmpty(r.ItemArray[2]) && checkIfColumnisEmpty(r.ItemArray[3])
&& checkIfColumnisEmpty(r.ItemArray[4]) && checkIfColumnisEmpty(r.ItemArray[5]))
{
if (checkIfColumnisEmpty(r.ItemArray[0]) && !checkIfColumnisEmpty(r.ItemArray[1]))
{
throw new ImportBOQException("Error importing document: First column is empty");
}
else if (!checkIfColumnisEmpty(r.ItemArray[0]) && checkIfColumnisEmpty(r.ItemArray[1]))
{
throw new ImportBOQException("Error importing document: Second column is empty");
}
else if (!checkIfColumnisEmpty(r.ItemArray[0]) && !checkIfColumnisEmpty(r.ItemArray[1]))
{
//all columns are valid so...
Column0inSpreadsheet = r.ItemArray[0] as string;
Column1inSpreadsheet = r.ItemArray[1] as string;
//Other code which performs other operations, once the level as reached this far
}
}
//if column 0 and 1 are NOT empty && Either column 2,3,4 or 5 is empty
else if (checkIfColumnisEmpty(r.ItemArray[0]) && checkIfColumnisEmpty(r.ItemArray[1])
|| !checkIfColumnisEmpty(r.ItemArray[2]) || !checkIfColumnisEmpty(r.ItemArray[3])
|| !checkIfColumnisEmpty(r.ItemArray[4]) || !checkIfColumnisEmpty(r.ItemArray[5]))
{
if (checkIfColumnisEmpty(r.ItemArray[2]))
{
throw new ImportBOQException("Error importing document: Third column is empty");
}
else if (checkIfColumnisEmpty(r.ItemArray[3]))
{
throw new ImportBOQException("Error importing document: Fourth column is empty");
}
else if (checkIfColumnisEmpty(r.ItemArray[4]))
{
throw new ImportBOQException("Error importing document: Fifth column is empty");
}
else if (checkIfColumnisEmpty(r.ItemArray[5]))
{
throw new ImportBOQException("Error importing document: Sixth column is empty");
}
else
//all columns are valid so...
{ Column2inSpreadsheet = (r.ItemArray[2]) as string;
Column3inSpreadsheet = (r.ItemArray[3]) as string;
Column4inSpreadsheet = (r.ItemArray[4]) as string;
Column5inSpreadsheet = (r.ItemArray[5]) as string;
//Other code which performs other operations, once the level as reached this far
}
}
else
//other errors ot related to empty colums
{
throw new Exception("Error Uploading");
}
}
If all you need is to check whether one of the columns is “empty” and get it’s index, you can use this: