C#获取Excel架构信息的方法
2010-10-28 16:21
519 查看
C#获取Excel架构信息的方法
使用OleDbConnection.GetOleDbSchemaTable方法可以获取待检索数据源的架构信息,常使用方法如下:
DataTableSchemadt=OleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new[]{null,null,null,"table"});
查看Schemadt内数据方法
for(inti=0;i<Schemadt.Rows.Count;i++)
{
Console.WriteLine("SheetName="+Schemadt.Rows[i]["TABLE_NAME"].ToString());
}
注意:SqlClient.SqlConnection对象没有与GetOleDbSchemaTable等价的方法。
下面解释一下GetOleDbSchemaTable这个方法
OLEDB.NET数据提供程序使用OleDbConnection对象的GetOleDbSchemaTable方法展示架构信息。GetOleDbSchemaTable返回填充了架构信息的DataTable。
GetOleDbSchemaTable的第一个参数是架构参数,它是一个OleDbSchemaGuid类型的标识,指定了要返回的架构信息的类型(如表、列和主键)。第二个参数是一个限制对象数组,对DataTable架构中返回的行进行过滤(例如,您可以指定对表的名称、类型、所有者和/或架构的限制)。
OleDbSchemaGuid成员
OleDbSchemaGuid参数指定GetOleDbSchemaTable方法要返回的架构表的类型。
OleDbSchemaGuid成员主要包括:
限制
限制是一个过滤值对象数组,每个元素对应于结果DataTable中的一个DataColumn。OleDbSchemaGuid参数决定了相应的限制。例如,在指定表的OleDbSchemaGuid时,限制数组如下所示:
{TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE}
在传递限制数组的值时,对于不包含值的数组元素使用VisualC#.NET的null关键字。例如,如果要检索表的架构,使用OleDbSchemaGuid.Tables。但是,如果指定了表,也将返回别名、同义词、视图和其他相关对象。因此,如果您希望过滤掉除表以外的所有其他对象,请对TABLE_TYPE使用TABLE限制。可以对TABLE_CATALOG、TABLE_SCHEMA和TABLE_NAME使用null,因为您不过滤这些对象:
DataTable中返回的每一列是限制列(TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、TABLE_TYPE),后面是TABLE_GUID、DESCRIPTION、TABLE_PROPID、DATE_CREATED和DATE_MODIFIED的其他架构列。
若要获得列名称的列表(即字段描述符,如TABLE_CATALOG、TABLE_SCHEMA和TABLE_NAME),您可以使用列的位置顺序。注意Columns数组的元素下标是从0开始的:
若要获得每一列的值(即实际的表名称,如Categories、Customers和Employees),您可以使用该行的ItemArray的位置顺序。注意ItemArray数组的元素下标是从0开始的:
}
使用OleDbConnection.GetOleDbSchemaTable方法可以获取待检索数据源的架构信息,常使用方法如下:
DataTableSchemadt=OleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new[]{null,null,null,"table"});
查看Schemadt内数据方法
for(inti=0;i<Schemadt.Rows.Count;i++)
{
Console.WriteLine("SheetName="+Schemadt.Rows[i]["TABLE_NAME"].ToString());
}
注意:SqlClient.SqlConnection对象没有与GetOleDbSchemaTable等价的方法。
下面解释一下GetOleDbSchemaTable这个方法
OLEDB.NET数据提供程序使用OleDbConnection对象的GetOleDbSchemaTable方法展示架构信息。GetOleDbSchemaTable返回填充了架构信息的DataTable。
GetOleDbSchemaTable的第一个参数是架构参数,它是一个OleDbSchemaGuid类型的标识,指定了要返回的架构信息的类型(如表、列和主键)。第二个参数是一个限制对象数组,对DataTable架构中返回的行进行过滤(例如,您可以指定对表的名称、类型、所有者和/或架构的限制)。
OleDbSchemaGuid成员
OleDbSchemaGuid参数指定GetOleDbSchemaTable方法要返回的架构表的类型。
OleDbSchemaGuid成员主要包括:
• | 列 |
• | 外键 |
• | 索引 |
• | 主键 |
• | 表 |
• | 视图 |
限制是一个过滤值对象数组,每个元素对应于结果DataTable中的一个DataColumn。OleDbSchemaGuid参数决定了相应的限制。例如,在指定表的OleDbSchemaGuid时,限制数组如下所示:
{TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE}
在传递限制数组的值时,对于不包含值的数组元素使用VisualC#.NET的null关键字。例如,如果要检索表的架构,使用OleDbSchemaGuid.Tables。但是,如果指定了表,也将返回别名、同义词、视图和其他相关对象。因此,如果您希望过滤掉除表以外的所有其他对象,请对TABLE_TYPE使用TABLE限制。可以对TABLE_CATALOG、TABLE_SCHEMA和TABLE_NAME使用null,因为您不过滤这些对象:
schemaTable=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, newObject[]{null,null,null,"TABLE"});
返回的数据表
每个符合OleDbSchemaGuid类型和限制规则的对象都对应于GetOleDbSchemaTable方法返回的DataTable中的一行。每个限制列对应于DataTable的一列,后面是基于OleDbSchemaGuid字段的其他架构信息。
例如,当您使用以下代码时,返回的DataTable的每一行是一个数据库表:
schemaTable=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, newObject[]{null,null,null,"TABLE"});
DataTable中返回的每一列是限制列(TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、TABLE_TYPE),后面是TABLE_GUID、DESCRIPTION、TABLE_PROPID、DATE_CREATED和DATE_MODIFIED的其他架构列。
若要获得列名称的列表(即字段描述符,如TABLE_CATALOG、TABLE_SCHEMA和TABLE_NAME),您可以使用列的位置顺序。注意Columns数组的元素下标是从0开始的:
for(inti=0;i<schemaTable.Columns.Count;i++){
Console.WriteLine(schemaTable.Columns[i].ToString());
}
若要获得每一列的值(即实际的表名称,如Categories、Customers和Employees),您可以使用该行的ItemArray的位置顺序。注意ItemArray数组的元素下标是从0开始的:
for(inti=0;i<schemaTable.Rows.Count;i++){
Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
}
相关文章推荐
- C#获取Excel架构信息的方法
- C#基于OLEDB获取Excel文件表结构信息的方法
- C#获取Excel各类信息的方法(转载)
- C#获取Excel各类信息的方法
- Office Add-in 中获取Office语言信息的方法C#
- c#通过oledb获取excel文件表结构信息
- 【翻译】C#获取方法调用信息
- C# 获取计算机的硬件信息的方法
- C# 获取网络路径文件大小信息的方法
- C# 获取IPV4地址,网关,子网掩码,网卡信息的方法
- Office Add-in 中获取Office语言信息的方法C#
- 【转】C#中获取Excel文件第一个表名的方法
- C#编写的邮件(Mail)发送发送人的信息从web.config或者从Appp.congfig中获取的方法
- c#中高效的excel导入sqlserver的方法和获取excel结构的方法
- C#调用dos窗口获取相关信息的方法
- 本文使用c#通过oledb可获取excel文件表的结构信息,同理也可以获得access等数据库的表结构信息,实现如下:
- c#通过oledb获取excel文件表结构信息
- C# 判断本机是否安装Excel及多版本安装?获取Excel进程信息和打开Excel应用软件
- C# 判断本机是否安装Excel及多版本安装?获取Excel进程信息和打开Excel应用软件
- c#通过oledb获取excel文件表结构信息