Il y a quelques jours, j'ai cherché des informations sur Internet pour implémenter cette fonction, mais je n'ai pas trouvé les résultats souhaités. Enfin, je veux juste trouver un moyen de l'implémenter, j'ai peur d'oublier. publiez-le pour une utilisation future et également pour les personnes qui ont besoin de cette fonction. Donnez quelques idées :
L'idée générale est la suivante : extraire les données EXCEL dans l'ensemble de données, insérer les données de la table principale via la boucle, puis insérer les données de la table via la boucle :
Le code est le suivant :
bouton vide privé1_Click (expéditeur de l'objet, System.EventArgs e)
{
//sélectionner un fichier
ofdSelectExcel.Filter = "Fichiers Excel (*.xls)|*.xls";
ofdSelectExcel.RestoreDirectory = true ;
if( ofdSelectExcel.ShowDialog() == DialogResult.OK )
{
si (ofdSelectExcel.FileName.Trim().Length == 0)
{
MessageBox.Show(this,"Veuillez d'abord sélectionner un fichier Excel !");
retour;
}
autre
{
ImportExcelToSqlServer(ofdSelectExcel.FileName.Trim());
}
}
}
************************************************* *******
Extraire des données
public void ImportExcelToSqlServer (string fileName)
{
si (nomfichier == null)
{
throw new ArgumentNullException("la chaîne du nom de fichier est nulle!");
}
if (fileName.Length == 0)
{
throw new ArgumentException("La chaîne du nom de fichier est vide!");
}
chaîne oleDBConnString = String.Empty;
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "Source de données=";
oleDBConnString += nomfichier ;
oleDBConnString += ";Propriétés étendues=Excel 8.0;";
OleDbConnection oleDBConn = null ;
OleDbDataAdapter oleAdMaster = null ;
DataTable m_tableName=new DataTable();;
DataSet ds=nouveau DataSet();
essayer
{
oleDBConn = nouveau OleDbConnection(oleDBConnString);
oleDBConn.Open();
m_tableName=oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
si (m_tableName != null && m_tableName.Rows.Count > 0)
{
m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString( )
;
chaîne sqlMaster ;
sqlMaster=" SELECT * FROM ["+m_tableName+"]";
oleAdMaster=nouveau OleDbDataAdapter(sqlMaster,oleDBConn);
oleAdMaster.Fill(ds,"m_tableName");
MailRebateManager manager=new MailRebateManager();
bool isSucess=manger.AddExceLGmailRebate(ds.Tables["m_tableName"],ApplicationVariable.HomeCompanyID);
si (est un succès)
{
MessageBox.Show("Manipuler les Succs !");
}
autre
{
MessageBox.Show("Échec de la manipulation");
}
}
attraper(Exception ex)
{
MessageBox.Show(ex.Message);
SimpleLogger.Log(ex);
essayer
{
}
attraper (OleDbException e)
{
SimpleLogger.Log(e);
MessageBox.Show("Une exception de type " + e.GetType() +");
}
}
}
*****************************************
Traitez les données et insérez-les respectivement dans la table principale et la table esclave
public bool AddExceLGmailRebate (DataTable tb, chaîne homeCompanyID)
{
bool ret=faux ;
SqlConnectioncon=null ;
Table DataTable=nouveau DataTable();
table=tb;
chaîne sConn = PublicManager.GetDBConnectionString(homeCompanyID);
con=new SqlConnection();
con.ConnectionString=sConn;
SqlTransaction tran=null ;
SqlCommand com=null ;
SqlCommand comm=null ;
essayer
{
con.Open();
tran = con.BeginTransaction();
si (table != null && table.Rows.Count > 0)
{
pour(int i=1;i<table.Rows.Count;i++)
{
string m_PromoCode=Convert.ToString(table.Rows[i][0]);
si(m_PromoCode=="")
{
m_PromoCode=Convert.ToString(table.Rows[i-1][0]);
}
si(m_PromoCode.Length>50)
{
m_PromoCode=m_PromoCode.Substring(0,50);
}
string m_ItemDescription=Convert.ToString(table.DefaultView[i][1]);
si(m_ItemDescription.IndexOf("(")>0)
{
int num=m_ItemDescription.IndexOf("(");
m_ItemDescription=m_ItemDescription.Substring(0,num);
si (m_ItemDescription.Length>50)
{
m_ItemDescription=m_ItemDescription.Substring(0,50);
}
}
si (m_ItemDescription.Length>50)
{
m_ItemDescription=m_ItemDescription.Substring(0,50);
}
string start=Convert.ToString(table.DefaultView[i][2]);
chaîne m_BeginPromoPeriodDate ;
chaîne m_EndPromoPeriodEndDate ;
si(début=="")
{
continuer;
}
autre
{
chaîne startTime=begin.Substring(0,8);
startTime=beginTime.Replace("/","-");
m_BeginPromoPeriodDate=beginTime;
chaîne endTime=begin.Substring(begin.Length-8);
endTime=endTime.Replace("/","-");
m_EndPromoPeriodEndDate=endTime;
}
chaîne m_RebateAmountStr=Convert.ToString(table.DefaultView[i][3]);
si (m_RebateAmountStr.Length >9)
{
m_RebateAmountStr=m_RebateAmountStr.Substring(0,9);
}
décimal m_RebateAmount ;
si(m_RebateAmountStr=="")
{
m_RebateAmount=0 ;
}
autre
{
m_RebateAmount= Convert.ToDecimal(m_RebateAmountStr);
}
chaîne m_TotalSoldStr=Convert.ToString(table.DefaultView[i][7]);
si (m_TotalSoldStr.Length >4)
{
m_TotalSoldStr=m_TotalSoldStr.Substring(0,4);
}
int m_TotalSold;
si(m_TotalSoldStr=="")
{
m_TotalVend=0 ;
}
autre
{
m_TotalSold=Convert.ToInt32(m_TotalSoldStr);
}
chaîne m_RebateReserveStr=Convert.ToString(table.DefaultView[i][8]);
si (m_RebateReserveStr.Length>9)
{
m_RebateReserveStr=m_RebateReserveStr.Substring(0,9);
}
décimal m_RebateReserve ;
si(m_RebateReserveStr=="")
{
m_RebateReserve=0;
}
autre
{
m_RebateReserve=Convert.ToDecimal(m_RebateReserveStr);
}
chaîne m_RedeemedStr=Convert.ToString(table.DefaultView[i][17]);
si (m_RedeemedStr.Length >8)
{
m_RedeemedStr=m_RedeemedStr.Substring(0,8);
}
décimal m_Redeemed ;
si(m_RedeemedStr=="")
{
m_Redeemed=0;
}
autre
{
m_Redeemed=Convert.ToDecimal(m_RedeemedStr);
}
string m_PromoItem=Convert.ToString(table.DefaultView[i][23]);
si(m_PromoItem.Length >50)
{
m_PromoItem=m_PromoItem.Substring(0,50);
}
DateHeure m_InDate ;
m_InDate=DateTime.Maintenant ;
string m_sqlMaster="INSERT INTO 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 =tran;
comm.ExecuteNonQuery ();
comm.Dispose();
}
pour(int i=1;i<table.Rows.Count;i++)
{
string m_PromoCode=Convert.ToString(table.Rows[i][0]);
si(m_PromoCode=="")
{
continuer;
}
int m_PromoCodeTransactionID=GetMasterTransactionID(m_PromoCode,homeCompanyID);
chaîne m_InvoiceNumber=Convert.ToString(table.Rows[i][4]);
si (m_InvoiceNumber.Length >30)
{
m_InvoiceNumber=m_InvoiceNumber.Substring(0,30);
}
si(m_InvoiceNumber=="")
{
m_InvoiceNumber="0";
}
chaîne m_InvoiceDate=Convert.ToString(table.DefaultView[i][6]);
si(m_InvoiceDate=="")
{
DateHeure m_InDate ;
m_InDate=DateTime.Maintenant ;
m_InvoiceDate=Convert.ToString(m_InDate);
}
chaîne m_serialNumberStr=Convert.ToString(table.Rows[i][5]);
si (m_serialNumberStr.Length >4)
{
m_serialNumberStr=m_serialNumberStr.Substring(0,4);
}
si(m_serialNumberStr=="")
{
m_serialNumberStr="0";
}
int m_serialNumber=Convert.ToInt32(m_serialNumberStr);
chaîne m_TotalValidStr=Convert.ToString( table.DefaultView[i][9]);
si (m_TotalValidStr.Length >4)
{
m_TotalValidStr=m_TotalValidStr.Substring(0,4);
}
si(m_TotalValidStr=="")
{
m_TotalValidStr="0";
}
int m_TotalValid=Convert.ToInt32 (m_TotalValidStr);
chaîne m_TotalInValidStr=Convert.ToString( table.DefaultView[i][10]);
si (m_TotalInValidStr.Length >4)
{
m_TotalInValidStr=m_TotalInValidStr.Substring(0,4);
}
si(m_TotalInValidStr=="")
{
m_TotalInValidStr="0";
}
int m_TotalInValid=Convert.ToInt32(m_TotalInValidStr);
chaîne m_ProcessFeeStr=Convert.ToString(table.DefaultView[i][13]);
si (m_ProcessFeeStr.Length >9)
{
m_ProcessFeeStr=m_ProcessFeeStr.Substring(0,9);
}
si(m_ProcessFeeStr=="")
{
m_ProcessFeeStr="0";
}
décimal m_ProcessFee=Convert.ToDecimal(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.Transaction =tran;
com.ExecuteNonQuery();
com.Dispose();
m++;
}
tran.Commit();
ret=true
}
}
attraper(Exception ex)
{
essayer
{
tran.Rollback();
}
attraper (SqlException e)
{
si (tran.Connection != null)
{
MessageBox.Show("Une exception de type " + e.GetType() +");
}
}
MessageBox.Show("Une erreur apparaît dans le numéro de ligne :"+m.ToString());
MessageBox.Show("Détails de l'erreur :"+ex.Message);
SimpleLogger.Log(ex);
ret=faux ;
}
enfin
{
con.Close();
con.Dispose();
}
retour ret
}
Source : Chronique du Chengdu DotNet Club (kim)