我正在开发一个将从存储过程读取并放入工作表的应用程序。我的问题是,当我遇到null时,代码中未对其进行处理。
while (reader.Read())
{
ws.Cells[i, 1] = reader.GetString(0);
ws.Cells[i, 2] = reader.GetString(1);
ws.Cells[i, 3] = reader.GetString(2);
ws.Cells[i, 4] = reader.GetString(3);
ws.Cells[i, 5] = reader.GetString(4);
ws.Cells[i, 6] = reader.GetString(5);
ws.Cells[i, 7] = reader.GetDecimal(6);
ws.Cells[i, 8] = reader.GetDateTime(7);
ws.Cells[i, 9] = reader.GetDecimal(8);
ws.Cells[i, 10] = reader.GetDecimal(9);
ws.Cells[i, 11] = reader.GetDecimal(10);
ws.Cells[i, 12] = reader.GetDecimal(11);
ws.Cells[i, 13] = reader.GetDateTime(12);
ws.Cells[i, 13] = reader.GetDateTime(13);
i++;
}
reader.Close();
Run Code Online (Sandbox Code Playgroud)
如果有人可以解释如何处理,以便我们只将单元格留空;谢谢!!
您可以使用reader.IsDBNull检查值是否为空并在代码中编写条件逻辑。
if (reader.IsDbBull(12)) {
ws.Cells[i, 13] = "";
} else {
ws.Cells[i, 13] = reader.GetDateTime(12);
}
Run Code Online (Sandbox Code Playgroud)
您可以用来reader.IsDBNull(int)在尝试从中读取值之前检查该字段是否为空。
例如
ws.Cells[i, 1] = reader.IsDBNull(0) ? "Default value when null" : reader.GetString(0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3160 次 |
| 最近记录: |