zoukankan      html  css  js  c++  java
  • Asp.Net(C#)使用oleDbConnection 连接Excel

    来自森大科技官方博客  http://www.cnsendblog.com/?p=84

    Asp.Net(C#)使用oleDbConnection 连接Excel

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

    针对如果上连接字符串 对相关属性进行说明如下:"HDR=Yes;”指示第一行中包含列名,而不是数据,"IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取。Excel 8.0 针对Excel2000及以上版本,Excel5.0 针对Excel97。

    using System.Data.OleDb;
    using System.Data;

    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
     "Data Source=c:/test.xls;" +
     "Extended Properties=Excel 8.0;";
    OleDbConnection objConn = new OleDbConnection(sConnectionString);
    objConn.Open();
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM [sheet1]", objConn);
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    objAdapter1.SelectCommand = objCmdSelect;
    DataSet objDataset1 = new DataSet();
    //将Excel中数据填充到数据集
    objAdapter1.Fill(objDataset1, "XLData");
    objConn.Close();

     

    从上面可以看出,使用ADO.NET可将Excel当作普通数据库,使用SQL语句来操作。

    通过ADO.NET获取Excel文件的各Sheet名称,可使用元数据方式:

     

    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
         "Data Source=c:/test.xls;" +
         "Extended Properties=Excel 8.0;";
    OleDbConnection cn = new OleDbConnection(sConnectionString);
    cn.Open();
    DataTable tb = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    foreach (DataRow row in tb.Rows)
    {
        //遍历弹出各Sheet的名称
        MessageBox.Show(row["TABLE_NAME"]);
    }

     

    关于使用ADO.NET创建并写入Excel文件与普通数据库操作极为类似,参见以下代码:

     

    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
         "Data Source=c:/test.xls;" +
         "Extended Properties=Excel 8.0;";
    OleDbConnection cn = new OleDbConnection(sConnectionString);
    string sqlCreate = "CREATE TABLE TestSheet ([ID] INTEGER,[Username] VarChar,[UserPwd] VarChar)";
    OleDbCommand cmd = new OleDbCommand(sqlCreate, cn);
    //创建Excel文件:C:/test.xls
    cn.Open();
    //创建TestSheet工作表
    cmd.ExecuteNonQuery();
    //添加数据
    cmd.CommandText = "INSERT INTO TestSheet VALUES(1,'elmer','password')";
    cmd.ExecuteNonQuery();
    //关闭连接
    cn.Close();

  • 相关阅读:
    MySQL修改表中字段的字符集
    JMM内存模型相关笔记整理
    可重入锁与不可重入锁
    ForkJoin、并行流计算、串行流计算对比
    CyclicBarrier的用法
    git笔记整理-learnGitBranching
    Git 学习相关笔记
    《0day2》学习笔记-part5(书目第十二章(上))
    《0day2》学习笔记-part4(书目第八、九、十、十一章)
    《0day2》学习笔记-part3(书目第六、七章)
  • 原文地址:https://www.cnblogs.com/cnsend/p/9863692.html
Copyright © 2011-2022 走看看