C#将EXCEL数据导入到数据库示例

1.在数据库先建立EXCEL对应的表,至少包括要导入数据对应的字段。
CREATE TABLE [dbo].[T_Customers](
[Id] [int] IDENTITY(1,1) NOT NULL,
[TelPhone] [nvarchar](50) NULL,
[MobilePhone] [nvarchar](50) NULL,
[PostCode] [nvarchar](50) NULL,
[Email] [nvarchar](50) NULL,
[Address] [nvarchar](50) NULL,
[DeptNo] [nvarchar](50) NULL,
[BuyDate] [datetime] NULL,
[CarNum] [nvarchar](50) NULL,
[BracketNum] [nvarchar](50) NULL,
[Brand] [nvarchar](50) NULL,
[TypeNum] [nvarchar](50) NULL,
[Suggestion] [nvarchar](50) NULL,
[Remarks] [nvarchar](50) NULL,
[Age] [int] NULL)

2.建立实体类
partial class T_Customers
{
public System.Int32? Id { get; set; }
public System.String TelPhone { get; set; }
public System.String MobilePhone { get; set; }
public System.String PostCode { get; set; }
public System.String Email { get; set; }
public System.String Address { get; set; }
public System.String DeptNo { get; set; }
public System.DateTime? BuyDate { get; set; }
public System.String CarNum { get; set; }
public System.String BracketNum { get; set; }
public System.String Brand { get; set; }
public System.String TypeNum { get; set; }
public System.String Suggestion { get; set; }
public System.String Remarks { get; set; }
public System.Int32? Age { get; set; }
}
3.建立数据访问层编写相应方法
partial class T_CustomersDAL
{
public int AddNew(T_Customers model){
string sql = "insert into T_Customers(TelPhone,MobilePhone,PostCode,Email,Address,DeptNo,BuyDate,CarNum,BracketNum,Brand,TypeNum,Suggestion,Remarks,Age) output inserted.id values(@TelPhone,@MobilePhone,@PostCode,@Email,@Address,@DeptNo,@BuyDate,@CarNum,@BracketNum,@Brand,@TypeNum,@Suggestion,@Remarks,@Age)";
              int id = (int)SqlHelper.ExecuteScalar(sql,
                             new SqlParameter("TelPhone", model.TelPhone),
                             new SqlParameter("MobilePhone", model.MobilePhone),
                             new SqlParameter("PostCode", model.PostCode),
                             new SqlParameter("Email", model.Email),
                             new SqlParameter("Address", model.Address),
                             new SqlParameter("DeptNo", model.DeptNo),
                             new SqlParameter("BuyDate", model.BuyDate),
                             new SqlParameter("CarNum", model.CarNum),
                             new SqlParameter("BracketNum", model.BracketNum),
                             new SqlParameter("Brand", model.Brand),
                             new SqlParameter("TypeNum", model.TypeNum),
                             new SqlParameter("Suggestion", model.Suggestion),
                             new SqlParameter("Remarks", model.Remarks),
                             new SqlParameter("Age", model.Age)
                                                   );
             return id;
}
其中用到SQLHelper中相应方法
public static object ExecuteScalar(string cmdText,params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = cmdText;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteScalar();
                }
            }
        }
4.建立业务类
partial class T_CustomersBLL
{
public int AddNew(T_Customers model)
{return new T_CustomersDAL().AddNew(model);}
}

5.在界面层下写代码
 private void btnImportFromExcel_Click(object sender, EventArgs e)
        {
            using (FileStream stream = File.OpenRead(@"c:\cust.xls"))
            {
                HSSFWorkbook workbook = new HSSFWorkbook(stream); //创建一个Excel文件   
                HSSFSheet sheet = workbook.GetSheetAt(0);
                for (int i = 1; i <= sheet.LastRowNum; i++)   //第一行是表头,所以不导入
                {
                    T_Customers cust = new T_Customers();
                    HSSFRow row = sheet.GetRow(i);  //得到Excel表单的第i行

                    HSSFCell Id= row.GetCell(0);   //门店ID即为部门ID
                    cust.DeptNo = Id.StringCellValue;

                    if (row.GetCell(2) == null) //因为电话号码可能不存在,所以需要判断
                    {
                       cust.TelPhone = "";
                    }
                    else
                    {
                       cust.TelPhone = row.GetCell(2).StringCellValue;  //固定电话
                    }

                    HSSFCell cellMobilePhone = row.GetCell(3);  //手机号
                    if (cellMobilePhone.CellType == HSSFCell.CELL_TYPE_STRING) //文件中有的电话错误的设置为了数字类型
                    {
                        cust.MobilePhone = cellMobilePhone.StringCellValue;
                    }
                    else
                    {
                        cust.MobilePhone = cellMobilePhone.NumericCellValue.ToString();
                    }
                    cust.CarNum = row.GetCell(4).StringCellValue;
                    cust.BracketNum = row.GetCell(5).StringCellValue;
                    cust.BuyDate = row.GetCell(6).DateCellValue;
                    cust.Brand = row.GetCell(7).StringCellValue;
                    cust.TypeNum = row.GetCell(8).StringCellValue;
                    cust.PostCode = "";
                    cust.Email = "";
                    cust.Remarks = "";
                    cust.Suggestion = "";
                    cust.Address = "";
                    cust.Age = 2;
                    new T_CustomersBLL().AddNew(cust);
                }
            }
            MessageBox.Show("导入成功!");
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

皮特大熊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值