• 读取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的值来获取指定的表的列架构。

  • 相关阅读:
    第二周作业
    7-2 求最大值及其下标
    第十一周作业
    第九周编程总结
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    第4周作业
    第三周作业
  • 原文地址:https://www.cnblogs.com/leotan/p/1435729.html
Copyright © 2020-2023  润新知