我已经远远地搜索了一个答案,但是我无法得到我需要的东西,所以我走了:
我有几个Excel文件。我需要将它们导入SQL Server表。所有文件,但一个是导入确定(我在一个小的Windows窗体应用程序中使用C#)。
问题是.xlsx文件中有两个时间列。在Excel中,对于文件,它们的格式设置为General
,导入正常。
对于有问题的文件,格式设置为Time
。这导致将时间作为datetime导入SQL Server,其固定日期为1899 30 12,并附加到实际时间。请注意,我已尝试将格式更改为General
,但会生成浮点数,这些浮点数将作为浮点数导入SQL Server。
目标SQL Server列是nvarchar(255)
(甚至不让我开始关于数据库设计,遗憾的是,我无法控制它进行更改)。
我不知道在哪里查看(这是一个Excel格式问题,它是代码中的一些隐形转换......)
这是我的代码:
public string bulkInsertFile(string file)
{
using (OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+file+";Extended Properties='Excel 12.0 Xml;HDR=YES;'"))
{
con.Open();
OleDbCommand com = new OleDbCommand("Select * from [Data$]", con);
OleDbDataReader dr = com.ExecuteReader();
using (SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["Sql"].ConnectionString))
{
sqlcon.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlcon))
{
bulkCopy.ColumnMappings.Add("start_time", "start_time");
bulkCopy.ColumnMappings.Add("end_time", "end_time");
}
}
}
dr.Close();
dr.Dispose();
return "Upload Successfull!";
}