zoukankan      html  css  js  c++  java
  • c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件

    Microsoft Jet 提供程序用于连接到 Excel 工作簿。在以下连接字符串中,Extended Properties 关键字设置 Excel 特定的属性。“HDR=Yes;”指示第一行中包含列名,而不是数据,“IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取。Excel 8.0 针对Excel2000及以上版本,Excel5.0 针对Excel97。

    --

    连接符(注意,Extended Properties 所需的双引号必须还要加双引号。

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


    用ADO.NET打开、读取并关闭代码示例如下:

    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文件的各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();

    关于SQL语句中用到的数据类型,请查看System.Data.OleDb.OleDbType 枚举。

    文章来源:http://blog.csdn.net/hlzyly/article/details/5710644



  • 相关阅读:
    TensorFlow设置GPU占用量
    与服务器同步工程(expect脚本)
    C/C++中#pragma once的使用
    sublime text 3 快捷键大全
    Sublime Text 3 注册码
    如何用diff比较两个文件夹下的内容
    Error in building opencv with ffmpeg
    opencv: Rotate image by 90, 180 or 270 degrees
    初识HTTPS
    Unity3D之Mecanim动画系统学习笔记(十一):高级功能应用
  • 原文地址:https://www.cnblogs.com/yczz/p/2380672.html
Copyright © 2011-2022 走看看