zoukankan      html  css  js  c++  java
  • 以OleDb方式操作Excel文件

    Excel可作为一种数据共享的方式交给办公人员,比access要简单方便

    Excel可作为OleDb的对象进行操作,这里以03版的Excel为例:

    首先要引入以下函数库,并定义必要的对象:

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

      OleDbConnection objConnection;
      OleDbCommand objCommand;
      OleDbDataAdapter objDataAdapter;

      public DataSet objDataSet=new DataSet();

    1、创建xls文档

         //生成03版的xls,filepath为文档的路径,sqlCreateTable为创建表的sql语句
    public void CreateAXls(string filePath,string sqlCreateTable)
    {
    try
    {
             if (!File.Exists(filePath))
             {
    objConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
    + filePath + "; Extended Properties=Excel 8.0;");
    string strSql = sqlCreateTable;
    objCommand = new OleDbCommand(strSql, objConnection);
    objConnection.Open();
    objCommand.ExecuteNonQuery();

    objConnection.Close();
             }
    }
    catch
    { }

    }


    2、读取工作薄

    public void ReadSheet(string path,string tableName)
    {
    try
    {
    if ((path.Substring(path.Length - 4, 4) == "xlsx") || (path.Substring(path.Length - 4, 4) == "XLSX"))
    {
    objConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source="
    + path + "; Extended Properties='Excel 12.0;HDR=YES;IMEX=1'");
    }
    else
    {
    objConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
    + path + "; Extended Properties='Excel 8.0;HDR=YES;IMEX=1'");
    }
    objConnection.Open();

    objDataAdapter = new OleDbDataAdapter("select * from [sheet1$]", objConnection);
    objDataAdapter.Fill(objDataSet, tableName);

    objConnection.Close();
    }
    catch
    { }
    }

    3、插入数据

    public void InsertData(string filePath, string sqlInsertData)
    {
    try
    {
    objConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
    + filePath + "; Extended Properties=Excel 8.0;");
    string strSql = sqlInsertData;
    objCommand = new OleDbCommand(strSql, objConnection);
    objCommand.CommandText = strSql;
    objCommand.CommandType = CommandType.Text;
    objConnection.Open();
    objCommand.ExecuteNonQuery();

    objConnection.Close();
    }
    catch
    { }
    }

    插入数据时,最好将所需插入的sql语句串成一个大字串,打开链接一次写入,这样不仅速度快,同时能减少IO错误




  • 相关阅读:
    10.19NOIP模拟赛(DAY2)
    bzoj1880: [Sdoi2009]Elaxia的路线(spfa,拓扑排序最长路)
    P3469 [POI2008]BLO-Blockade(Tarjan 割点)
    P2746 [USACO5.3]校园网Network of Schools(Tarjan)
    10.17NOIP模拟赛
    10.16NOIP模拟赛
    P3953 逛公园(dp,最短路)
    牛客OI周赛2-提高组
    洛谷 P1948 [USACO08JAN]电话线Telephone Lines 题解
    洛谷 P2563 [AHOI2001]质数和分解 题解
  • 原文地址:https://www.cnblogs.com/lingcoln/p/2305852.html
Copyright © 2011-2022 走看看