Importer des données d'Excel vers SQL Server 2008 # 2

ssortingng path = ssortingng.Concat(Server.MapPath("~/TempFiles/"), FileUpload1.FileName); //Save File as Temp then you can delete it if you want FileUpload1.SaveAs(path); ssortingng excelConnectionSsortingng = ssortingng.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path); // Create Connection to Excel Workbook using (OleDbConnection connection = new OleDbConnection(excelConnectionSsortingng)) { OleDbCommand command = new OleDbCommand ("Select * FROM [Sheet1$]", connection); connection.Open(); // Create DbDataReader to Data Worksheet using (DbDataReader dr = command.ExecuteReader()) { // SQL Server Connection Ssortingng ssortingng sqlConnectionSsortingng = @conn; // Bulk Copy to SQL Server using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionSsortingng)) { bulkCopy.DestinationTableName ="Table1"; bulkCopy.WriteToServer(dr); Label1.Text = "The Client data has been exported successfully from Excel to SQL"; } } } 

J'essaye d'importer des données d'excel à SQL Server, cela fonctionne très bien jusqu'à ce que je ne passe pas la date mais maintenant je veux passer la date à SQL Server il fournit l'erreur pendant que le type de données ne correspond pas.

Quelqu'un a la logique ou s'il vous plaît me suggérer ce que je peux faire pour ..

Peut-être la colonne de la feuille Excel n'est pas dans un format de date valide.

Changez-le en Type de date.

 Select the Column in the Excel Sheet -> Right Click -> Format Cells -> Number Tab -> Select Date -> Choose your desired Type -> Ok 

Ensuite, vous essayez d'importer …

Le DateTime vous lisez à partir d'Excel est la date OLE Automation et vous devez le convertir en c # DateTime avant de l'insert dans le server sql. Ce serait double valeur pour la date quand vous lisez d'Excel. Vous pouvez utiliser DateTime.FromOADate pour convertir la valeur double en DateTime . Vous pouvez utiliser SqlBulkCopy.WriteToServer (table DataTable) , cette méthode vous permet de passer le datatable. Vous pouvez modifier la date dans datatable dans le format requirejs et l'utiliser pour save datatables en masse dans le server SQL. Vous pouvez importer des données Excel à datatable, cet article va vous aider.

 DateTime dt = DateTime.FromOADate(double.Parse(ssortingngVariableContainingDateTime)); 

Cela fonctionne, j'ai essayé de le convertir en datatble den modifier le type de données, puis insérez

  ssortingng sqlConnectionSsortingng = @conn; command.CommandType = CommandType.Text; OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(command); DataTable dt = new DataTable(); DataSet objDataset1 = new DataSet(); objAdapter1.Fill(dt); for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[0][5].ToSsortingng() != "") { DateTime dt1 = cf.texttodb(dt.Rows[0][5].ToSsortingng()); dt.Rows[i][5] = dt1; }} using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionSsortingng)) { bulkCopy.DestinationTableName = "Tablename"; bulkCopy.WriteToServer(dt); Label1.Text = "The Client data has been exported successfully from Excel to SQL"; } 

dans ce que j'avais créé une fonction txtdob qui convertit ma string au format datetime Merci je l'ai essayé fonctionne si vous le sentez comme marquez la réponse