读取Excel表

我采用的是ADO.NET的方式连接Excel表,方法跟网上介绍的有很多,我这里不就说了。有兴趣的话可以访问:

http://www.cnblogs.com/Jinglecat/archive/2006/08/15/477472.html

我这里主要讲一下如何动态的获取Excel表名和每个表中列名。

获取表名的方法是:

DataTable dt = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

获取列名的方法是:

DataTable dt = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "Sheet1$", null });

比较难理解的地方就是这个参数:new object[] { null, null, null, "TABLE" },在MSDN查了一下,下面是它那里的描述:

Tables 映射到 OLE DB TABLES 行集合。除非另外指定,否则将按下列顺序返回限制列。

限制列

CLR 数据类型

说明

TABLE_CATALOG

string

目录名称。如果提供程序不支持目录,则为 null 值。

TABLE_SCHEMA

string

非限定的架构名称。如果提供程序不支持架构,则为 null 值。

TABLE_NAME

string

表名称。返回的列不能包含 null 值。

TABLE_TYPE

string

表类型。以下之一或提供程序特定的值:“ALIAS”、“TABLE”、“SYNONYM”、“SYSTEM TABLE”、“VIEW”、“GLOBAL TEMPORARY”、“LOCAL TEMPORARY”或“SYSTEM VIEW”。返回的列不能包含 null 值。

OleDbSchemaGuid.Columns 字段

Columns 映射到 OLE DB COLUMNS 行集合。除非另外指定,否则将按下列顺序返回限制列。

限制列

CLR 数据类型

说明

TABLE_CATALOG

string

目录名称。如果提供程序不支持目录,则为空值。

TABLE_SCHEMA

string

非限定的架构名称。如果提供程序不支持架构,则为空值。

TABLE_NAME

string

表名称。返回的列不能包含空值。

COLUMN_NAME

string

列的名称;它可能不唯一。如果无法确定该名称,则返回空值。此列与 COLUMN_GUID 和 COLUMN_PROPID 列一起形成列 ID。根据提供程序使用的 DBID 结构元素,其中的一个或多个列将为空值。如果可能,结果列 ID 应持久保持。然而,某些提供程序不支持列的持久性标识符。基表的列 ID 应该在视图下保持不变。

 在这里,可以指定Table_Name的值来获取指定的表的列架构。

原文地址:https://www.cnblogs.com/leotan/p/1435729.html