C# 将数据从Excel导入Sql Server 2008#2
我正在尝试将数据从excel导入SQL Server,在我不传递日期之前它工作正常,但现在我想将日期传递给SQL Server,因为数据类型不匹配,所以它会提供错误C# 将数据从Excel导入Sql Server 2008#2,c#,sql,sql-server,excel,oledb,C#,Sql,Sql Server,Excel,Oledb,我正在尝试将数据从excel导入SQL Server,在我不传递日期之前它工作正常,但现在我想将日期传递给SQL Server,因为数据类型不匹配,所以它会提供错误 任何人都有逻辑,或者请建议我如何处理..从excel中读取的DateTime是OLE自动化日期,在插入sql server之前,必须将其转换为c#DateTime。当您从excel中读取数据时,它将是日期的两倍值。您可以使用将双精度值转换为DateTime。您可以使用,此方法允许您传递datatable。您可以按require格式更
任何人都有逻辑,或者请建议我如何处理..从excel中读取的
DateTime
是OLE自动化日期,在插入sql server之前,必须将其转换为c#DateTime
。当您从excel中读取数据时,它将是日期的两倍值。您可以使用将双精度值转换为DateTime
。您可以使用,此方法允许您传递datatable。您可以按require格式更改datatable中的日期,并使用它在sql server中保存批量数据。您可以将excel数据导入datatable,这将对您有所帮助
string path = string.Concat(Server.MapPath("~/TempFiles/"), FileUpload1.FileName);
//Save File as Temp then you can delete it if you want
FileUpload1.SaveAs(path);
string excelConnectionString = string.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(excelConnectionString))
{
OleDbCommand command = new OleDbCommand
("Select * FROM [Sheet1$]", connection);
connection.Open();
// Create DbDataReader to Data Worksheet
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = @conn;
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName ="Table1";
bulkCopy.WriteToServer(dr);
Label1.Text = "The Client data has been exported successfully from Excel to SQL";
}
}
}
可能是Excel工作表中的列的日期格式无效 将其更改为日期类型
DateTime dt = DateTime.FromOADate(double.Parse(stringVariableContainingDateTime));
然后您尝试导入…它可以工作我尝试在datatble den change datatype中转换它,然后插入
Select the Column in the Excel Sheet -> Right Click -> Format Cells ->
Number Tab -> Select Date -> Choose your desired Type -> Ok
string sqlConnectionString=@conn;
command.CommandType=CommandType.Text;
OleDbDataAdapter objAdapter1=新的OleDbDataAdapter(命令);
DataTable dt=新的DataTable();
数据集objDataset1=新数据集();
对象1.填充(dt);
对于(int i=0;i
在这里,我创建了一个函数txtdob,它将我的字符串转换为datetime格式
非常感谢。
我尝试过,如果你觉得有效,请将其标记为答案在批量导入数据时,如何转换它。。是否有任何东西可以让我将其导入datatable,然后再导入sql server,以便我们可以检查datatable中的每个数据并将其转换为asp,因为我是新加入asp的,我不知道,但我检查了它。。我使用了datareader,我正在执行datareader来插入我的值,如果我正在写入datatable,那么我如何执行datatable值来插入我的数据??n thanx对于您的回复,您可以将excel数据导入datatable,yeh thanx vl尝试实现,如果我gt vl让您知道thanxI尝试了此操作,但不起作用。。。你有试过这个吗??
string sqlConnectionString = @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].ToString() != "")
{
DateTime dt1 = cf.texttodb(dt.Rows[0][5].ToString());
dt.Rows[i][5] = dt1;
}}
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "Tablename";
bulkCopy.WriteToServer(dt);
Label1.Text = "The Client data has been exported successfully from Excel to SQL";
}