zoukankan      html  css  js  c++  java
  • C#用ado.net访问EXCEL的常见问题及解决方法

    C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问。

    ado.net访问excel的实例:

    OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = @"provider=Microsoft.jet.oledb.4.0;data source=[excel文件路径];Extended Properties=""Excel 8.0;HDR=YES;"""; cn.Open(); OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", cn); dtCode = new DataSet(); oda.Fill(dtCode); dataGridView1.DataSource = dtCode.Tables[0].DefaultView;

    注意:

    1、Excel的工作簿名作为表名,如Sheet1书写为[Sheet1$],[]和$都不能省略

    2、访问方式为oledb方式,provider=Microsoft.jet.oledb.4.0 ,特别是Extended Properties=""Excel 8.0;HDR=YES;"" 不能省略,省略就错了。HDR=YES表示excel表格的第一行数据作为表的字段名,实际数据从第二行开始。

    我在第一次做的时候碰到两个问题。

    (1)提示"找不到可安装的ISAM"

    这个是由于连接字符串缺少Extended Properties=""Excel 8.0;HDR=YES;"" 导致的。

    (2)提示"索引103开始处,初始化字符串的格式不符合规范"

    这是由于连接字符串书写错误造成的,请参考正确的格式。这个错误的提示对应的链接字符串如下:

    "provider=Microsoft.jet.oledb.4.0;data source=[excel文件路径];Extended Properties=""Excel 8.0;HDR=YES;" 可以看到错误是由于Extended Properties的值是由""括起来的,由于丢失了右边的括号,造成不符合规范。

    如果您用的 EXCEL2010,注意连接串需要修改:

    strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" +   @"Data Source=" + excelFilename + ";" +   "Extended Properties="Excel 12.0 Xml;HDR=No"";

    复制代码
     1 /// <summary>
     2 /// 将CSV转化为DataTable
     3 /// </summary>
     4 /// <param name="strFilePath"></param>
     5 /// <returns></returns>
     6         public static DataTable CSVToDataTable(string strFileFullPath)
     7         {
     8             if (string.IsNullOrEmpty(strFileFullPath))
     9             {
    10                 return null;
    11             }
    12             DataTable dt = new DataTable();
    13             try
    14             {
    15                 //得到路径
    16                 string strFilePath = Path.GetDirectoryName(strFileFullPath);
    17                 //得到文件名
    18                 string strFileName = Path.GetFileNameWithoutExtension(strFileFullPath);
    19                 //读取CSV文件
    20                 string connString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + strFilePath + ";Extensions=asc,csv,tab,txt;";
    21                 using (OdbcConnection odbcConn = new OdbcConnection(connString))
    22                 {
    23                     odbcConn.Open();
    24                     OdbcCommand oleComm = new OdbcCommand();
    25                     oleComm.Connection = odbcConn;
    26                     oleComm.CommandText = "select * from [" + strFileName + "#csv]";
    27                     OdbcDataAdapter adapter = new OdbcDataAdapter(oleComm);
    28                     adapter.Fill(dt);
    29                     dt.TableName = strFileName;
    30                     odbcConn.Close();
    31                 }
    32             }
    33             catch (Exception)
    34             {
    35                 throw;
    36             }
    37             return dt;
    38         }
    复制代码

  • 相关阅读:
    hdu5360 Hiking(水题)
    hdu5348 MZL's endless loop(欧拉回路)
    hdu5351 MZL's Border(规律题,java)
    hdu5347 MZL's chemistry(打表)
    hdu5344 MZL's xor(水题)
    hdu5338 ZZX and Permutations(贪心、线段树)
    hdu 5325 Crazy Bobo (树形dp)
    hdu5323 Solve this interesting problem(爆搜)
    hdu5322 Hope(dp)
    Lightoj1009 Back to Underworld(带权并查集)
  • 原文地址:https://www.cnblogs.com/jhabb/p/3381263.html
Copyright © 2011-2022 走看看