【发布时间】:2012-12-10 17:24:13
【问题描述】:
我正在修复一个 C# 项目,该项目使用带有数据定义的 Excel 工作表来创建一个 .fmt 文件,供 SQL Server 中的批量插入使用。
我的问题是 Excel 文件有时在底部有空白行,而我正在处理的 C# 解析器会检测到比实际包含数据定义的行数更高的行数。
因此,fmt 文件在其第二行有更多的行,并且批量插入在到达底部并尝试继续读取时会引发异常。
例如,只有 50 行数据和 50 个空白行。 fmt 文件的第二行将有一个 100(第一行是 SQL Server 版本)。第 3 到 52 行是 50 行数据定义。当批量插入尝试到达第 53 行时,它会返回一些列异常。
C# 解析器使用 Ace OleDB 12 连接到 Excel 97 格式文件。
SQL 是:
var commandText = string.Format("SELECT * FROM [{0}$]", SpreadSheetName);
我尝试在 SQL 代码中添加 WHERE 子句,以仅选择具有非空“A”列的行,但这不起作用。
SELECT * FROM [{0}$] WHERE [A] <> ''
有没有一种方法可以通过一些 SQL 代码来增强命令文本,以便仅从满足特定条件的 Excel 中提取数据行?
【问题讨论】:
-
你能显示一些代码吗?你也在什么对象中读取数据?您可以使用 DataReader 逐行读取并忽略那些为空的。
标签: c# .net excel ado.net oledb