• Excel连接字符串在.NET中的应用


    转:https://www.cnblogs.com/jaxu/archive/2011/07/29/2121022.html 

      介绍几种在.NET中直接连接Excel作为数据源的几种方法以及连接字符串的说明。

    Microsoft Jet OLE DB 4.0

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

      64位机器可以看这里http://www.connectionstrings.com/Articles/Show/using-jet-in-64-bit-environments

      如果上面的连接字符串不奏效,可以尝试下面的格式。有些早期版本的2003格式的Excel文件需要在连接字符串中添加OLEDB前缀作为Provider标识。

    OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

      连接字符串中的双引号是必须的,请注意在代码中进行转义。

      C#,C++中使用"对双引号进行转义。

      VB6,VBScript中使用""对双引号进行转义。

      XML(或web.config)中使用"对双引号进行转义。

      "HDR=Yes;"用于指示将Excel表格中的第一行作为标题,此时在查询语句中可以将标题作为数据表的字段名使用。"HDR=No;"则表示将Excel表格中的所有行都作为数据内容而不包含标题,此时在查询语句中需要使用F1,F2等作为字段名。如第一列为F1,第二列为F2等,以此类推。

      "IMEX=1;"用于指示始终将Excel单元格中的内容作为text类型的数据。该选项会对Excel文件内容的回写产生影响。

      SQL语法:"Select [Column Name One]", [Column Name Two] From [Sheet One$]"。注意Excel wooksheet的名字必须以"$"结尾并且包含在方括号中。列名如有需要也应当包含在方括号中(如列名中包含有空格其它特殊字符等)。

      如何通过程序获取指定Excel文件中各个Sheet的名称?

    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        DataTable dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
        string sqlStr = "Select * From " + dt.Rows[0]["TABLE_NAME"].ToString();
    }

      除了表名和列名的写法有所不同外,SQL语句的使用方法和在SQL Server中基本相同。在.NET中数据访问层仍然可以使用OleDbHelper类,使用方法与普通的数据库一样。

      另外,如果指定的Excel文件需要密码才能打开,你需要在连接字符串中提供连接密码,否则打开Excel文件会失败。具体的内容可以看这里,

    http://www.connectionstrings.com/Articles/Show/how-to-open-password-protected-excel-workbook

    ACE OLEDB 12.0

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:myFoldermyOldExcelFile.xls;Extended Properties="Excel 12.0;HDR=YES";

      使用ACE 12.0可以连接早期版本(97-2003)的Excel文件,对于2003以后版本的Excel也通用,但前提是Office组件中安装了对应的ACE,否则无法使用。可以去下面的地址下载ACE组件。

    http://www.microsoft.com/download/en/details.aspx?id=13255

      该连接字符串同样适用于Xlsb和Xlsm格式的Excel文件。

    Microsoft Excel ODBC Driver

    Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:MyExcel.xls;DefaultDir=c:mypath;

      使用ReadOnly=0表示连接是只读的,所有对数据源的更新操作将不可回写。

    Driver={Microsoft Excel Driver (*.xls)};Dbq=C:MyExcel.xls;ReadOnly=0;

    .NET xlReader for Microsoft Excel

    Data Source =c:myExcelFile.xlsx;HDR=yes;Format=xlsx;

      注意上面的连接字符串中使用了HDR=yes参数,表示将Excel数据表的首行作为标题。

    在C# 打开execl2016文件时候出现了 conn.ServerVersion”引发了System.InvalidOperationException异常,参考本文后安装了Office组件中对应的ACE,从而解决了问题。

  • 相关阅读:
    【卡西欧Fx-5800p系列教程】Pol()和Rec()正反算妙用
    《关于2013年全国测量人员最低工资标准的通知》
    易语言测量编程工具教程篇
    价值300元的《测量宝典》
    业界常用的和不常用cad快捷键
    角度格式批量转化弧度—易语言
    Web.config中 mode="RemoteOnly" 跟mode="On" 区别
    Oracle 批量修改某个用户下表的表空间
    JQuery radio单选框应用
    RadioButtonFor控件
  • 原文地址:https://www.cnblogs.com/janghe/p/8746135.html
Copyright © 2020-2023  润新知