目前,我正在上传一个Excel文件,用于上传并以表单形式显示数据。因此,我用 basic 验证
dt
不应为空,并且计数应大于 0
。但我也想要一个验证,如果 dt
列是银行,例如:下图中的 STATE
列第一行,那么它应该提示 Excel 有空白列的警报。我怎样才能实现它。
下面是我尝试过的,但仍然排除空白值。
private void Import_To_Grid(string FilePath, string Extension, string isHDR)
{
string conStr = "";
switch (Extension)
{
case ".xls": //Excel 97-03
conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"]
.ConnectionString;
break;
case ".xlsx": //Excel 07
conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"]
.ConnectionString;
break;
}
conStr = String.Format(conStr, FilePath, isHDR);
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
connExcel.Close();
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
oda.SelectCommand = cmdExcel;
oda.Fill(dt);
connExcel.Close();
if (dt != null && dt.Rows.Count > 0)
{
if (dt.Rows.Count <= Convert.ToInt32(ConfigurationManager.AppSettings["excelUploadSize_JioAF"])) // check for 200 records
{
}
else
{
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Max upload size is 200 rows');", true);
}
}
else
{
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Excel is blank..!!');", true);
}
}
可以通过迭代列和行来实现上述要求。下面的代码将适用于单列,并让我们知道
State
列是否有空行。
bool isColumnBlank = true;
foreach (DataRow row in dt.Rows)
{
if (!string.IsNullOrWhiteSpace(row["State"].ToString()))
{
isColumnBlank = false;
break;
}
}
if (isColumnBlank)
{
hasBlankColumn = true;
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Excel has a blank column: " + column.ColumnName + "');", true);
break; // Exit the loop if a blank column is found
}