GetOleDbSchemaTable(OleDbSchemaGuid.Columns, null) errors ou
本文关键字:errors ou null OleDbSchemaGuid Columns GetOleDbSchemaTable | 更新日期: 2023-09-27 18:36:51
使用以下
代码在 C# 中读取特定 excel 工作簿的列时出现错误:
DataTable dtCols = new DataTable();
try
{
dtCols = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, null);
}
System.Data.OleDb.OleDbException (0x80004005):Microsoft Jet 数据库引擎找不到对象"Sheet1$_"。 确保对象存在,并且正确拼写其名称和路径名。
我的工作表名称是名称"Sheet1",但显然系统正在尝试读取架构中某个隐藏表的列 - 请注意,该工作表名称的末尾有一个下划线。
如何防止该行代码出错?有没有办法利用限制参数来解决这个问题?
谢谢。
您需要
在方法调用中指定工作表,否则它不知道要加载哪些列。它正在加载 Sheet1$ 作为电子表格中不存在的默认值。
尝试
var list = new List<string>();
DataTable dtColumns = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new string[] { null, null, workSheetName, null });
foreach (DataRow dr in dtColumns.Rows)
list.Add(dr[3].ToString());