C#操作Excel数据增删改查

C#操作Excel数据增删改查。

首先创建ExcelDB.xlsx文件,并添加两张工作表。

工作表1:

UserInfo表,字段:UserId、UserName、Age、Address、CreateTime。

工作表2:

Order表,字段:OrderNo、ProductName、Quantity、Money、SaleDate。

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

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

namespace MyStudy.DAL
{
    /// <summary>
    /// Excel文件处理类
    /// </summary>
    public class ExcelHelper
    {
        private static string fileName = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/ExcelFile/ExcelDB.xlsx";

        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;
        }
    }
}

2、 创建实体类

2.1 创建UserInfo.cs类,用户信息实体类。

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

namespace MyStudy.Model
{
    /// <summary>
    /// 用户信息实体类
    /// </summary>
    public class UserInfo
    {
        public int UserId { get; set; }
        public string UserName { get; set; }
        public int? Age { get; set; }
        public string Address { get; set; }
        public DateTime? CreateTime { get; set; }

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

                    if (dataSet.Tables[0].Columns.Contains("UserName") && !Convert.IsDBNull(row["UserName"]))
                        user.UserName = (string)row["UserName"];

                    if (dataSet.Tables[0].Columns.Contains("Age") && !Convert.IsDBNull(row["Age"]))
                        user.Age = Convert.ToInt32(row["Age"]);

                    if (dataSet.Tables[0].Columns.Contains("Address") && !Convert.IsDBNull(row["Address"]))
                        user.Address = (string)row["Address"];

                    if (dataSet.Tables[0].Columns.Contains("CreateTime") && !Convert.IsDBNull(row["CreateTime"]))
                        user.CreateTime = Convert.ToDateTime(row["CreateTime"]);

                    userList.Add(user);
                }
            }
            return userList;
        }  
    }
}

2.2 创建Order.cs类,订单实体类。

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

namespace MyStudy.Model
{
    /// <summary>
    /// 订单实体类
    /// </summary>
    public class Order
    {
        public string OrderNo { get; set; }
        public string ProductName { get; set; }
        public int? Quantity { get; set; }
        public decimal? Money { get; set; }
        public DateTime? SaleDate { get; set; }

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

                    if (dataSet.Tables[0].Columns.Contains("ProductName") && !Convert.IsDBNull(row["ProductName"]))
                        order.ProductName = (string)row["ProductName"];

                    if (dataSet.Tables[0].Columns.Contains("Quantity") && !Convert.IsDBNull(row["Quantity"]))
                        order.Quantity = Convert.ToInt32(row["Quantity"]);

                    if (dataSet.Tables[0].Columns.Contains("Money") && !Convert.IsDBNull(row["Money"]))
                        order.Money = Convert.ToDecimal(row["Money"]);

                    if (dataSet.Tables[0].Columns.Contains("SaleDate") && !Convert.IsDBNull(row["SaleDate"]))
                        order.SaleDate = Convert.ToDateTime(row["SaleDate"]);

                    orderList.Add(order);
                }
            }
            return orderList;
        }
    }
}

3、创建业务逻辑类

3.1 创建UserInfoBLL.cs类,用户信息业务类。

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

namespace MyStudy.BLL
{
    /// <summary>
    /// 用户信息业务类
    /// </summary>
    public class UserInfoBLL
    {
        /// <summary>  
        /// 查询用户列表  
        /// </summary>  
        public List<UserInfo> GetUserList()
        {
            List<UserInfo> userList = new List<UserInfo>();
            string sql = "SELECT * FROM [UserInfo$]";
            DataSet dateSet = ExcelHelper.GetReader(sql);
            userList = UserInfo.ToList(dateSet);
            return userList;
        }

        /// <summary>  
        /// 获取用户总数  
        /// </summary>  
        public int GetUserCount()
        {
            int result = 0;
            string sql = "SELECT COUNT(*) FROM [UserInfo$]";
            result = ExcelHelper.GetScalar(sql);
            return result;
        }

        /// <summary>  
        /// 新增用户信息  
        /// </summary>  
        public int AddUserInfo(UserInfo param)
        {
            int result = 0;
            string sql = "INSERT INTO [UserInfo$](UserId,UserName,Age,Address,CreateTime) VALUES(@UserId,@UserName,@Age,@Address,@CreateTime)";
            OleDbParameter[] oleDbParam = new OleDbParameter[]  
            {  
                new OleDbParameter("@UserId", param.UserId),   
                new OleDbParameter("@UserName", param.UserName),   
                new OleDbParameter("@Age", param.Age),  
                new OleDbParameter("@Address",param.Address),
                new OleDbParameter("@CreateTime",param.CreateTime)  
            };
            result = ExcelHelper.ExecuteCommand(sql, oleDbParam);
            return result;
        }

        /// <summary>  
        /// 修改用户信息  
        /// </summary>  
        public int UpdateUserInfo(UserInfo param)
        {
            int result = 0;
            if (param.UserId > 0)
            {
                string sql = "UPDATE [UserInfo$] SET UserName=@UserName,Age=@Age,Address=@Address WHERE UserId=@UserId";
                OleDbParameter[] sqlParam = new OleDbParameter[]  
                {  
                    new OleDbParameter("@UserId",param.UserId),  
                    new OleDbParameter("@UserName", param.UserName),   
                    new OleDbParameter("@Age", param.Age),  
                    new OleDbParameter("@Address",param.Address)  
                };
                result = ExcelHelper.ExecuteCommand(sql, sqlParam);
            }
            return result;
        }

        /// <summary>  
        /// 删除用户信息  
        /// </summary>  
        public int DeleteUserInfo(UserInfo param)
        {
            int result = 0;
            if (param.UserId > 0)
            {
                string sql = "DELETE [UserInfo$] WHERE UserId=@UserId";
                OleDbParameter[] sqlParam = new OleDbParameter[]  
                {  
                    new OleDbParameter("@UserId",param.UserId),  
                };
                result = ExcelHelper.ExecuteCommand(sql, sqlParam);
            }
            return result;
        }  
    }
}

3.2 创建OrderBLL.cs类,订单业务类

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

namespace MyStudy.BLL
{
    /// <summary>
    /// 订单业务类
    /// </summary>
    public class OrderBLL
    {
        /// <summary>  
        /// 查询订单列表  
        /// </summary>  
        public List<Order> GetOrderList()
        {
            List<Order> orderList = new List<Order>();
            string sql = "SELECT * FROM [Order$]";
            DataSet dateSet = ExcelHelper.GetReader(sql);
            orderList = Order.ToList(dateSet);
            return orderList;
        }

        /// <summary>  
        /// 获取订单总数  
        /// </summary>  
        public int GetOrderCount()
        {
            int result = 0;
            string sql = "SELECT COUNT(*) FROM [Order$]";
            result = ExcelHelper.GetScalar(sql);
            return result;
        }

        /// <summary>  
        /// 新增订单  
        /// </summary>  
        public int AddOrder(Order param)
        {
            int result = 0;
            string sql = "INSERT INTO [Order$](OrderNo,ProductName,Quantity,Money,SaleDate) VALUES(@OrderNo,@ProductName,@Quantity,@Money,@SaleDate)";
            OleDbParameter[] oleDbParam = new OleDbParameter[]  
            {  
                new OleDbParameter("@OrderNo", param.OrderNo),   
                new OleDbParameter("@ProductName", param.ProductName),   
                new OleDbParameter("@Quantity", param.Quantity),  
                new OleDbParameter("@Money",param.Money),
                new OleDbParameter("@SaleDate",param.SaleDate)  
            };
            result = ExcelHelper.ExecuteCommand(sql, oleDbParam);
            return result;
        }

        /// <summary>  
        /// 修改订单  
        /// </summary>  
        public int UpdateOrder(Order param)
        {
            int result = 0;
            if (!String.IsNullOrEmpty(param.OrderNo))
            {
                string sql = "UPDATE [Order$] SET ProductName=@ProductName,Quantity=@Quantity,Money=@Money WHERE OrderNo=@OrderNo";
                OleDbParameter[] sqlParam = new OleDbParameter[]  
                {  
                    new OleDbParameter("@OrderNo",param.OrderNo),  
                    new OleDbParameter("@ProductName",param.ProductName),  
                    new OleDbParameter("@Quantity", param.Quantity),   
                    new OleDbParameter("@Money", param.Money)   
                };
                result = ExcelHelper.ExecuteCommand(sql, sqlParam);
            }
            return result;
        }

        /// <summary>  
        /// 删除订单  
        /// </summary>  
        public int DeleteOrder(Order param)
        {
            int result = 0;
            if (!String.IsNullOrEmpty(param.OrderNo))
            {
                string sql = "DELETE [Order$] WHERE OrderNo=@OrderNo";
                OleDbParameter[] sqlParam = new OleDbParameter[]  
                {  
                    new OleDbParameter("@OrderNo",param.OrderNo),  
                };
                result = ExcelHelper.ExecuteCommand(sql, sqlParam);
            }
            return result;
        }  
    }
}

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 C# 操作 SQL Server 的增删改查示例: 1. 连接数据库 ```csharp using System.Data.SqlClient; string connectionString = "Data Source=(local);Initial Catalog=databaseName;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionString); connection.Open(); ``` 2. 插入数据 ```csharp string insertQuery = "INSERT INTO tableName (column1, column2, column3) VALUES (@value1, @value2, @value3)"; SqlCommand command = new SqlCommand(insertQuery, connection); command.Parameters.AddWithValue("@value1", "value1"); command.Parameters.AddWithValue("@value2", "value2"); command.Parameters.AddWithValue("@value3", "value3"); command.ExecuteNonQuery(); ``` 3. 查询数据 ```csharp string selectQuery = "SELECT * FROM tableName"; SqlCommand command = new SqlCommand(selectQuery, connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { string column1Value = reader.GetString(0); string column2Value = reader.GetString(1); string column3Value = reader.GetString(2); // 输出或处理查询结果 } ``` 4. 更新数据 ```csharp string updateQuery = "UPDATE tableName SET column1 = @value1 WHERE column2 = @value2"; SqlCommand command = new SqlCommand(updateQuery, connection); command.Parameters.AddWithValue("@value1", "newValue1"); command.Parameters.AddWithValue("@value2", "value2"); command.ExecuteNonQuery(); ``` 5. 删除数据 ```csharp string deleteQuery = "DELETE FROM tableName WHERE column2 = @value2"; SqlCommand command = new SqlCommand(deleteQuery, connection); command.Parameters.AddWithValue("@value2", "value2"); command.ExecuteNonQuery(); ``` 6. 关闭连接 ```csharp connection.Close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值