【发布时间】:2015-09-01 14:51:14
【问题描述】:
我想统计 Excel 表格中空单元格的数量。
我读取了所有 Excel 工作表的双精度值,但我无法计算空值,因为下面的代码可能不起作用。
string path_connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + testbox_bath.Text + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\"";
OleDbConnection connection = new OleDbConnection(path_connection);
OleDbDataAdapter adapter_STDsamverkan = new OleDbDataAdapter("Select [Kvalitetsklass (null)],[Std samverkan (null)]" + "from [Sheet1$]", connection);
DataTable dt_STDsamverkan = new DataTable();
adapter_STDsamverkan.Fill(dt_STDsamverkan);
for (int i = 0; i < dt_STDsamverkan.Rows.Count; i++)
{
if (dt_STDsamverkan.Rows[i].Field<double>(1) == null)
{
STDsamverkan_count2++;
}
}
IF 语句的提示是
表达式的结果总是“假”,因为一个类型的值 'double' 永远不等于 'double' 类型的 'null'?
我该怎么办?
【问题讨论】:
-
您几乎肯定要检查与 null 不同的 DBNull; DBNull 表示某事没有数据; null 表示某些东西不存在
-
感谢@ryanyuyu 和@Plutonix。我曾尝试使用
dt_STDsamverkan.Rows[i].Field<double>(1) == DBNull.Value,但不起作用。我得到:表达式的结果总是“假”,因为“双”类型的值永远不等于“双?”类型的“空”? -
如何处理从 Excel 表中读取的双精度值?