华域联盟 .Net C#操作Excel数据增删改查示例

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;

}

}

}

您可能感兴趣的文章:

  • c#将Excel数据导入到数据库的实现代码
  • C#数据导入/导出Excel文件及winForm导出Execl总结
  • c#利用Excel直接读取数据到DataGridView
  • C#连接Excel2003和Excel2007以上版本做数据库的连接字符串
  • C#导出数据到Excel文件的方法
  • C#定制Excel界面并实现与数据库交互的方法
  • C#将Sql数据保存到Excel文件中的方法
  • C#自定义导出数据到Excel的类实例
  • C#利用Openxml读取Excel数据实例
  • C#如何操作Excel数据透视表

本文由 华域联盟 原创撰写:华域联盟 » C#操作Excel数据增删改查示例

转载请保留出处和原文链接:https://www.cnhackhy.com/52408.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部