【发布时间】:2013-07-23 20:22:56
【问题描述】:
我一直在使用一个程序,在该程序中我导入了 2 个 excel 文件,而这些 excel 文件具有不同的列名。因此,用户可能会导入错误的 excel 文件(具有其他列名)而我的问题是我正在使用 OledbDataAdapter 从 excel 中读取数据,所以我必须指定每列的名称,所以当用户导入错误的文件时程序停止工作(因为程序找不到正确的列来获取数据)。
好的,我的问题是,有没有办法检查特定 Excel 表中是否存在列? 因此,如果用户导入的文件中不存在该列,我将能够做一些事情......
这是我的代码的一部分:
OleDbCommand command1 = new OleDbCommand(
@"SELECT DISTINCT serie FROM [Sheet1$]
WHERE serie =@MercEnInventario AND serie IS NOT NULL", connection);
command1.Parameters.Add(new OleDbParameter("MercEnInventario", MercInv));
string serieN = Convert.ToString(command1.ExecuteScalar());
readerOle = command1.ExecuteReader();
readerOle.Close();
当我尝试为字符串“serieN”赋值时出现 OleDbException,因为用户导入的 Excel 文件中不存在列名“serie”。
如果你能帮助我,我将不胜感激:)
【问题讨论】:
-
你能把它放在
try-catch类型的循环中吗?这样,当错误发生时,您将被定向到错误处理程序。丑陋但有效。 -
当 excel 文件可能“关闭”时,这是我使用“select *”的一个地方......你可以从 [Sheet1$] 中执行“select *”。 ...把它放在 IDataReader 中......然后在第一行之后中断......并创建一个已知列名的集合。Excel 文件是如此善变......我讨厌查询它们。