c#通过oledb获取excel文件表结构信息

 using System;
namespace ConsoleApplication11
...{
    class Program
    ...{
        public static void Main()
        ...{
             getExcelFileInfo(@"c:a.xls");
         }
        private static void getExcelFileInfo(string Path)
        ...{
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
             System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
             conn.Open();
             System.Data.DataTable table = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);

            foreach (System.Data.DataRow drow in table.Rows)
            ...{
                string TableName = drow["Table_Name"].ToString();
                 Console.WriteLine(TableName+":");
                 System.Data.DataTable tableColumns = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, new object[] ...{ null, null, TableName ,null});
                foreach (System.Data.DataRow drowColumns in tableColumns.Rows)
                ...{
                    string ColumnName = drowColumns["Column_Name"].ToString();
                     Console.WriteLine(" "+ColumnName);
                 }
             }
             Console.ReadKey(true);
         }
     }
}protected void DoOleSql(string sql, string database)

    {       

        OleDbConnection conn = new OleDbConnection();

        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("\\") + database + "; Extended Properties='Excel 8.0;HDR=no;IMEX=0'";

        try

        {

            conn.Open();

        }

        catch (Exception e)

        {

            Response.Write(e.ToString());

        }

        OleDbCommand olecommand = new OleDbCommand(sql, conn);       

        try

        {

            olecommand.ExecuteNonQuery();

        }

        catch (Exception eee)

        {

            Response.Write(eee.ToString());

            conn.Close();

        }

        finally

        {

            conn.Close();

        }

        conn.Close();

注:1)使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,您可以在连接字符串的扩展属性中指定 HDR=NO。如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推);2)IMEX=1将所有读入数据看作字符,其他值(0、2)请查阅相关帮助文档;3)如果出现“找不到可安装的isam”错误,一般是连接字符串错误

DoOleSql(sql,"test.xls");

6、删除excel文件中的数据:不提倡使用这种方法

7、对于非标准结构的excel表格,可以指定excel中sheet的范围

1)读取数据:string sql = "select * from [sheet1$A3:F20]";

2)更新数据:string sql = "update [sheet1$A9:F15] set FieldName='333' where AnotherFieldName='b3'";

3)插入数据:string sql = "insert into [sheet1$A9:F15](FieldName1,FieldName2,…) values('a',’b’,…)";

 

转自:http://hi.baidu.com/keepzeal/blog/item/ec1679430a92521572f05d07.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值