C#操作Excel数据增删改查示例

1.首先创建测试库.xls文件,并添加两张工作表。


  工作表1:
  专业擂台,字段:ID、CATEGORY、NUM、QUESTION、ANSWER。

2.创建ExcelHelper.cs类,Excel文件处理类

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;

namespace DTXT.DAL
{
    /// <summary> 
    /// Excel文件处理类 
    /// </summary> 
    public class ExcelHelper
    {
        private static string fileName = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"ExcelFile测试库.xls";

        private static OleDbConnection connection;
        public static OleDbConnection Connection
        {
            get
            {
                string connectionString = "";
                string fileType = System.IO.Path.GetExtension(fileName);
                if (string.IsNullOrEmpty(fileType)) return null;
                if (fileType == ".xls")
                {
                    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties="Excel 8.0;HDR=YES;IMEX=2;"";
                }
                else
                {
                    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties="Excel 12.0;HDR=YES;IMEX=2;"";
                }
                if (connection == null)
                {
                    connection = new OleDbConnection(connectionString);
                    connection.Open();
                }
                else if (connection.State == System.Data.ConnectionState.Closed)
                {
                    connection.Open();
                }
                else if (connection.State == System.Data.ConnectionState.Broken)
                {
                    connection.Close();
                    connection.Open();
                }
                return connection;
            }
        }

        /// <summary> 
        /// 执行无参数的SQL语句 
        /// </summary> 
        /// <param name="sql">SQL语句</param> 
        /// <returns>返回受SQL语句影响的行数</returns> 
        public static int ExecuteCommand(string sql)
        {
            OleDbCommand cmd = new OleDbCommand(sql, Connection);
            int result = cmd.ExecuteNonQuery();
            connection.Close();
            return result;
        }

        /// <summary> 
        /// 执行有参数的SQL语句 
        /// </summary> 
        /// <param name="sql">SQL语句</param> 
        /// <param name="values">参数集合</param> 
        /// <returns>返回受SQL语句影响的行数</returns> 
        public static int ExecuteCommand(string sql, params OleDbParameter[] values)
        {
            OleDbCommand cmd = new OleDbCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            int result = cmd.ExecuteNonQuery();
            connection.Close();
            return result;
        }

        /// <summary> 
        /// 返回单个值无参数的SQL语句 
        /// </summary> 
        /// <param name="sql">SQL语句</param> 
        /// <returns>返回受SQL语句查询的行数</returns> 
        public static int GetScalar(string sql)
        {
            OleDbCommand cmd = new OleDbCommand(sql, Connection);
            int result = Convert.ToInt32(cmd.ExecuteScalar());
            connection.Close();
            return result;
        }

        /// <summary> 
        /// 返回单个值有参数的SQL语句 
        /// </summary> 
        /// <param name="sql">SQL语句</param> 
        /// <param name="parameters">参数集合</param> 
        /// <returns>返回受SQL语句查询的行数</returns> 
        public static int GetScalar(string sql, params OleDbParameter[] parameters)
        {
            OleDbCommand cmd = new OleDbCommand(sql, Connection);
            cmd.Parameters.AddRange(parameters);
            int result = Convert.ToInt32(cmd.ExecuteScalar());
            connection.Close();
            return result;
        }

        /// <summary> 
        /// 执行查询无参数SQL语句 
        /// </summary> 
        /// <param name="sql">SQL语句</param> 
        /// <returns>返回数据集</returns> 
        public static DataSet GetReader(string sql)
        {
            OleDbDataAdapter da = new OleDbDataAdapter(sql, Connection);
            DataSet ds = new DataSet();
            da.Fill(ds, "UserInfo");
            connection.Close();
            return ds;
        }

        /// <summary> 
        /// 执行查询有参数SQL语句 
        /// </summary> 
        /// <param name="sql">SQL语句</param> 
        /// <param name="parameters">参数集合</param> 
        /// <returns>返回数据集</returns> 
        public static DataSet GetReader(string sql, params OleDbParameter[] parameters)
        {
            OleDbDataAdapter da = new OleDbDataAdapter(sql, Connection);
            da.SelectCommand.Parameters.AddRange(parameters);
            DataSet ds = new DataSet();
            da.Fill(ds);
            connection.Close();
            return ds;
        }
    }
}

  

3. 创建实体类 创建ZYLT.cs类,专业擂台实体类。

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace DTXT.Model
{
    /// <summary> 
    /// 专业擂台 
    /// </summary> 
    public class ZYLT
    {
        public string ID { get; set; }
        public string CATEGORY { get; set; }
        public string NUM { get; set; }
        public string QUESTION { get; set; }
        public string ANSWER { get; set; }

        /// <summary> 
        /// 将DataTable转换成List数据 
        /// </summary> 
        public static List<ZYLT> ToList(DataSet dataSet)
        {
            List<ZYLT> ZYLT_Lst = new List<ZYLT>();
            if (dataSet != null && dataSet.Tables.Count > 0)
            {
                foreach (DataRow row in dataSet.Tables[0].Rows)
                {
                    ZYLT zylt = new ZYLT();
                    if (dataSet.Tables[0].Columns.Contains("ID") && !Convert.IsDBNull(row["ID"]))
                        zylt.ID = row["ID"].ToString();

                    if (dataSet.Tables[0].Columns.Contains("CATEGORY") && !Convert.IsDBNull(row["CATEGORY"]))
                        zylt.CATEGORY = row["CATEGORY"].ToString();

                    if (dataSet.Tables[0].Columns.Contains("NUM") && !Convert.IsDBNull(row["NUM"]))
                        zylt.NUM = row["NUM"].ToString();

                    if (dataSet.Tables[0].Columns.Contains("QUESTION") && !Convert.IsDBNull(row["QUESTION"]))
                        zylt.QUESTION = row["QUESTION"].ToString();

                    if (dataSet.Tables[0].Columns.Contains("ANSWER") && !Convert.IsDBNull(row["ANSWER"]))
                        zylt.ANSWER = row["ANSWER"].ToString();

                    ZYLT_Lst.Add(zylt);
                }
            }
            return ZYLT_Lst;
        }
    }
}

  

4、创建业务逻辑类 创建ZYLTBLL.cs类,专业擂台业务类。

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using DTXT.Model;
using DTXT.DAL;
using System.Data.OleDb;

namespace DTXT.BLL
{
    /// <summary> 
    /// 专业擂台业务类 
    /// </summary> 
    public class ZYLTBLL
    {
        /// <summary> 
        /// 查询用户列表 
        /// </summary> 
        public List<ZYLT> GetZYLTList(string sqlWhere = "")
        {
            List<ZYLT> ZYLT_Lst = new List<ZYLT>();
            string sql = "SELECT * FROM [专业擂台$] WHERE 1=1 ";
            if (sqlWhere != "")
            {
                sql += "AND " + sqlWhere;
            }
            DataSet dateSet = ExcelHelper.GetReader(sql);
            ZYLT_Lst = ZYLT.ToList(dateSet);
            return ZYLT_Lst;
        }

        /// <summary> 
        /// 获取专业擂台总数 
        /// </summary> 
        public int GetZYLTCount()
        {
            int result = 0;
            string sql = "SELECT COUNT(*) FROM [专业擂台$]";
            result = ExcelHelper.GetScalar(sql);
            return result;
        }

        /// <summary> 
        /// 新增专业擂台
        /// </summary> 
        public int AddZYLT(ZYLT param)
        {
            int result = 0;
            string sql = "INSERT INTO [专业擂台$](ID,CATEGORY,NUM,QUESTION,ANSWER) VALUES(@ID,@CATEGORY,@NUM,@QUESTION,@ANSWER)";
            OleDbParameter[] oleDbParam = new OleDbParameter[] 
                { 
                    new OleDbParameter("@ID", param.ID), 
                    new OleDbParameter("@CATEGORY", param.CATEGORY), 
                    new OleDbParameter("@NUM", param.NUM), 
                    new OleDbParameter("@QUESTION",param.QUESTION), 
                    new OleDbParameter("@ANSWER",param.ANSWER) 
                };
            result = ExcelHelper.ExecuteCommand(sql, oleDbParam);
            return result;
        }

        /// <summary> 
        /// 修改专业擂台 在SET中要添加上 ID=@ID这个条件
        /// </summary> 
        public int UpdateZYLT(ZYLT param)
        {
            int result = 0;
            if (!string.IsNullOrEmpty(param.ID))
            {
                string sql = "UPDATE [专业擂台$] SET ID=@ID,CATEGORY=@CATEGORY,NUM=@NUM,QUESTION=@QUESTION,ANSWER=@ANSWER WHERE ID=@ID";
                OleDbParameter[] sqlParam = new OleDbParameter[] 
                { 
                    new OleDbParameter("@ID",param.ID), 
                    new OleDbParameter("@CATEGORY", param.CATEGORY), 
                    new OleDbParameter("@NUM", param.NUM), 
                    new OleDbParameter("@QUESTION",param.QUESTION), 
                    new OleDbParameter("@ANSWER",param.ANSWER) 
                };
                result = ExcelHelper.ExecuteCommand(sql, sqlParam);
            }
            return result;
        }

        /// <summary> 
        /// 删除专业擂台
        /// </summary> 
        public int DeleteZYLT(ZYLT param)
        {
            int result = 0;
            if (!string.IsNullOrEmpty(param.ID))
            {
                string sql = "DELETE FROM [专业擂台$] WHERE ID=@ID";
                OleDbParameter[] sqlParam = new OleDbParameter[] 
                { 
                     new OleDbParameter("@ID",param.ID), 
                 };
                result = ExcelHelper.ExecuteCommand(sql, sqlParam);
            }
            return result;
        }

        /// <summary> 
        /// 删除专业擂台
        /// </summary> 
        public int DeleteZYLTByID(string ID)
        {
            int result = 0;
            if (!string.IsNullOrEmpty(ID))
            {
                string sql = "DELETE [专业擂台$] WHERE ID=@ID";
                OleDbParameter[] sqlParam = new OleDbParameter[] 
                { 
                     new OleDbParameter("@ID",ID), 
                 };
                result = ExcelHelper.ExecuteCommand(sql, sqlParam);
            }
            return result;
        }

    }
}

  

  

原文地址:https://www.cnblogs.com/liangwenchao-912/p/6084349.html