เมื่อไม่กี่วันก่อน ฉันค้นหาข้อมูลบนอินเทอร์เน็ตเพื่อใช้งานฟังก์ชันนี้ แต่ยังไม่พบผลลัพธ์ที่ต้องการ สุดท้ายฉันแค่ต้องการหาวิธีใช้งาน ฉันกลัวที่จะลืม โพสต์ไว้เพื่อใช้ในอนาคตและสำหรับผู้ที่ต้องการฟังก์ชันนี้ด้วย ให้แนวคิดบางประการ:
แนวคิดทั่วไปคือ: แยกข้อมูล EXCEL ลงในชุดข้อมูล แทรกข้อมูลตารางหลักผ่านลูป จากนั้นแทรกข้อมูลจากตารางผ่านลูป:
รหัสมีดังนี้:
โมฆะส่วนตัว button1_Click (ผู้ส่งวัตถุ System.EventArgs e)
-
//เลือกไฟล์
ofdSelectExcel.Filter = "ไฟล์ Excel(*.xls)|*.xls";
ofdSelectExcel.RestoreDirectory = จริง;
ถ้า( ofdSelectExcel.ShowDialog() == DialogResult.OK )
-
ถ้า (ofdSelectExcel.FileName.Trim().Length == 0)
-
MessageBox.Show(this,"กรุณาเลือกไฟล์ excel ก่อน!");
กลับ;
-
อื่น
-
ImportExcelToSqlServer(ofdSelectExcel.FileName.Trim());
-
-
}
*************************************************** *******
ดึงข้อมูล
โมฆะสาธารณะ ImportExcelToSqlServer (ชื่อไฟล์สตริง)
-
ถ้า (ชื่อไฟล์ == null)
-
โยน ArgumentNullException ใหม่ ("สตริงชื่อไฟล์เป็นโมฆะ!");
}
ถ้า (fileName.Length == 0)
-
โยน ArgumentException ใหม่ ("สตริงชื่อไฟล์ว่างเปล่า!");
}
สตริง oleDBConnString = String.Empty;
oleDBConnString = "ผู้ให้บริการ=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "แหล่งข้อมูล =";
oleDBConnString += ชื่อไฟล์;
oleDBConnString += ";คุณสมบัติขยาย=Excel 8.0;";
OleDbConnection oleDBConn = null;
OleDbDataAdapter oleAdMaster = null;
DataTable m_tableName=ใหม่ DataTable();;
ชุดข้อมูล ds=ชุดข้อมูลใหม่();
พยายาม
-
oleDBConn = OleDbConnection ใหม่ (oleDBConnString);
oleDBConn.Open();
m_tableName=oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
ถ้า (m_tableName != null && m_tableName.Rows.Count > 0)
{
m_tableName.TableName =m_tableName.Rows[0]["TABLE_NAME"].ToString();
}
สตริง sqlMaster;
sqlMaster=" เลือก * จาก ["+m_tableName+"]";
oleAdMaster=ใหม่ OleDbDataAdapter(sqlMaster,oleDBConn);
oleAdMaster.Fill(ds,"m_tableName");
ผู้จัดการ MailRebateManager=ใหม่ MailRebateManager();
บูล isSucess=manger.AddExceLGmailRebate(ds.Tables["m_tableName"],ApplicationVariable.HomeCompanyID);
ถ้า(คือความสำเร็จ)
-
MessageBox.Show("จัดการความสำเร็จ!");
-
อื่น
-
MessageBox.Show("การจัดการล้มเหลว");
-
-
จับ (ข้อยกเว้นเช่น)
-
MessageBox.Show(เช่น ข้อความ);
SimpleLogger.Log(เช่น);
พยายาม
{
}
จับ (OleDbException จ)
-
SimpleLogger.Log(e);
MessageBox.Show("ข้อยกเว้นประเภท " + e.GetType() +");
-
-
-
-
ประมวลผลข้อมูลและแทรกลงในตารางหลักและตารางทาสตามลำดับ
บูลสาธารณะ AddExceLGmailRebate (DataTable tb, สตริง homeCompanyID)
-
บูล ret=false;
SqlConnection แย้ง = null;
ตาราง DataTable = DataTable ใหม่ ();
ตาราง=TB;
สตริง sConn = PublicManager.GetDBConnectionString (homeCompanyID);
con=การเชื่อมต่อ Sql ใหม่();
con.ConnectionString=sConn;
SqlTransaction ทราน = null;
SqlCommand com=null;
คำสั่ง SqlCommand=null;
พยายาม
-
แย้งเปิด();
tran = con.BeginTransaction();
ถ้า (ตาราง != null && table.Rows.Count > 0)
-
สำหรับ(int i=1;i<table.Rows.Count;i++)
-
string m_PromoCode=Convert.ToString(table.Rows[i][0]);
ถ้า(m_PromoCode=="")
-
m_PromoCode=Convert.ToString(ตาราง.แถว[i-1][0]);
-
ถ้า(m_PromoCode.ความยาว>50)
-
m_PromoCode=m_PromoCode.สตริงย่อย(0,50);
-
string m_ItemDescription=Convert.ToString(table.DefaultView[i][1]);
ถ้า(m_ItemDescription.IndexOf("(")>0)
-
int num=m_ItemDescription.IndexOf("(");
m_ItemDescription=m_ItemDescription.Substring(0,num);
ถ้า(m_ItemDescription.ความยาว>50)
-
m_ItemDescription=m_ItemDescription.Substring(0,50);
-
-
ถ้า(m_ItemDescription.ความยาว>50)
-
m_ItemDescription=m_ItemDescription.Substring(0,50);
-
string start=Convert.ToString(table.DefaultView[i][2]);
สตริง m_BeginPromoPeriodDate;
สตริง m_EndPromoPeriodEndDate;
ถ้า(เริ่มต้น=="")
-
ดำเนินการต่อ;
-
อื่น
-
สตริง startTime=begin.Substring(0,8);
startTime=beginTime.Replace("/", "-");
m_BeginPromoPeriodDate=เวลาเริ่มต้น;
สตริง endTime=begin.Substring(begin.Length-8);
endTime=endTime.Replace("/", "-");
m_EndPromoPeriodEndDate=เวลาสิ้นสุด;
-
สตริง m_RebateAmountStr=Convert.ToString(table.DefaultView[i][3]);
ถ้า(m_RebateAmountStr.ความยาว >9)
-
m_RebateAmountStr=m_RebateAmountStr.Substring(0,9);
-
ทศนิยม m_RebateAmount;
ถ้า(m_RebateAmountStr=="")
-
m_RebateAmount=0;
-
อื่น
-
m_RebateAmount= Convert.ToDecimal(m_RebateAmountStr);
-
สตริง m_TotalSoldStr=Convert.ToString(table.DefaultView[i][7]);
ถ้า(m_TotalSoldStr.ความยาว >4)
-
m_TotalSoldStr=m_TotalSoldStr.Substring(0,4);
-
int m_TotalSold;
ถ้า(m_TotalSoldStr=="")
-
m_ขายทั้งหมด=0;
-
อื่น
-
m_TotalSold=แปลงเป็นInt32(m_TotalSoldStr);
}
สตริง m_RebateReserveStr=Convert.ToString(table.DefaultView[i][8]);
ถ้า(m_RebateReserveStr.ความยาว>9)
-
m_RebateReserveStr=m_RebateReserveStr.Substring(0,9);
-
ทศนิยม m_RebateReserve;
ถ้า(m_RebateReserveStr=="")
-
m_RebateReserve=0;
-
อื่น
-
m_RebateReserve=แปลงเป็นทศนิยม(m_RebateReserveStr);
}
สตริง m_RedeemedStr=Convert.ToString(table.DefaultView[i][17]);
ถ้า(m_RedeemedStr.ความยาว >8)
-
m_RedeemedStr=m_RedeemedStr.Substring(0,8);
-
ทศนิยม m_แลก;
ถ้า(m_RedeemedStr=="")
-
m_แลกแล้ว=0;
-
อื่น
-
m_Redeemed=แปลงเป็นทศนิยม(m_RedeemedStr);
-
string m_PromoItem=Convert.ToString(table.DefaultView[i][23]);
ถ้า(m_PromoItem.ความยาว >50)
-
m_PromoItem=m_PromoItem.สตริงย่อย(0,50);
}
วันที่และเวลา m_InDate;
m_InDate=DateTime.ตอนนี้;
string m_sqlMaster = "แทรกลงใน act.dbo.Newegg_GMailRebate (PromoCode, PromoItem, RebateAmount, ItemDescription, BeginPromoPeriodDate,
EndPromoPeriodEndDate,PostMaskDate,TotalSold,RebateReserve,Redeemed,InDate)VALUES('"+m_PromoCode+"','"+m_PromoItem+"','"+m_RebateAmount+"',
'"+m_ItemDescription+"','"+m_BeginPromoPeriodDate+"','"+m_EndPromoPeriodEndDate+"',
'"+m_InDate+"','"+m_TotalSold+"','"+m_RebateReserve+"','"+m_Redeemed+"','"+m_InDate+"')";
comm=new SqlCommand(m_sqlMaster,con);
comm.Transaction = ทราน;
comm.ExecuteNonQuery ();
comm.ทิ้ง();
-
สำหรับ(int i=1;i<table.Rows.Count;i++)
-
string m_PromoCode=Convert.ToString(table.Rows[i][0]);
ถ้า(m_PromoCode=="")
-
ดำเนินการต่อ;
-
int m_PromoCodeTransactionID=GetMasterTransactionID(m_PromoCode,homeCompanyID);
string m_InvoiceNumber=Convert.ToString(table.Rows[i][4]);
ถ้า(m_InvoiceNumber.ความยาว >30)
-
m_InvoiceNumber=m_InvoiceNumber.สตริงย่อย(0,30);
-
ถ้า(m_InvoiceNumber=="")
-
m_InvoiceNumber = "0";
}
สตริง m_InvoiceDate=Convert.ToString(table.DefaultView[i][6]);
ถ้า(m_InvoiceDate=="")
-
วันที่และเวลา m_InDate;
m_InDate=DateTime.ตอนนี้;
m_InvoiceDate=แปลง.ToString(m_InDate);
}
สตริง m_serialNumberStr=Convert.ToString(table.Rows[i][5]);
ถ้า(m_serialNumberStr.ความยาว >4)
-
m_serialNumberStr=m_serialNumberStr.สตริงย่อย(0,4);
-
ถ้า(m_serialNumberStr=="")
-
m_serialNumberStr = "0";
-
int m_serialNumber=แปลงเป็นInt32(m_serialNumberStr);
สตริง m_TotalValidStr=Convert.ToString( table.DefaultView[i][9]);
ถ้า(m_TotalValidStr.ความยาว >4)
-
m_TotalValidStr=m_TotalValidStr.Substring(0,4);
-
ถ้า(m_TotalValidStr=="")
-
m_TotalValidStr="0";
-
int m_TotalValid=แปลงเป็นInt32 (m_TotalValidStr);
สตริง m_TotalInValidStr=Convert.ToString( table.DefaultView[i][10]);
ถ้า(m_TotalInValidStr.ความยาว >4)
-
m_TotalInValidStr=m_TotalInValidStr.Substring(0,4);
-
ถ้า(m_TotalInValidStr=="")
-
m_TotalInValidStr = "0";
-
int m_TotalInValid=แปลงเป็นInt32(m_TotalInValidStr);
สตริง m_ProcessFeeStr=Convert.ToString(table.DefaultView[i][13]);
ถ้า(m_ProcessFeeStr.ความยาว >9)
-
m_ProcessFeeStr=m_ProcessFeeStr.Substring(0,9);
-
ถ้า(m_ProcessFeeStr=="")
-
m_ProcessFeeStr = "0";
-
ทศนิยม m_ProcessFee=แปลงเป็นทศนิยม(m_ProcessFeeStr);
string m_sqlDetails="INSERT INTO act.dbo.Newegg_GMailExcelMaster(PromoCodeTransactionID,InvoiceNumber,InvoiceDate,SerialNumber,
TotalValid,TotalInvalid,ProcessFee)VALUES('"+m_PromoCodeTransactionID+"','"+m_InvoiceNumber+"','"+m_InvoiceDate+"',
'"+m_serialNumber+"','"+m_TotalValid+"','"+m_TotalInValid+"','"+m_ProcessFee+"')";
com=new SqlCommand(m_sqlDetails,con);
com.CommandTimeout=60;
com.ธุรกรรม = ทราน;
com.ExecuteNonQuery();
com.ทิ้ง();
ม++;
-
tran.กระทำ();
ret=true
;
-
จับ (ข้อยกเว้นเช่น)
-
พยายาม
-
tran.ย้อนกลับ();
-
จับ (SqlException e)
-
ถ้า (tran.Connection != null)
-
MessageBox.Show("ข้อยกเว้นประเภท " + e.GetType() +");
-
-
MessageBox.Show("เกิดข้อผิดพลาดขึ้นหมายเลขแถว:"+m.ToString());
MessageBox.Show("รายละเอียดข้อผิดพลาด:"+ex.Message);
SimpleLogger.Log(เช่น);
เร็ต=เท็จ;
-
ในที่สุด
-
แย้งปิด();
แย้งทิ้ง();
-
return ret;
}
ที่มา: คอลัมน์ Chengdu DotNet Club (คิม)