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("导入成功!");
}
C#将EXCEL数据导入到数据库示例
最新推荐文章于 2021-04-13 15:50:56 发布