Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据从Excel导入Sql Server 2008#2_C#_Sql_Sql Server_Excel_Oledb - Fatal编程技术网

C# 将数据从Excel导入Sql Server 2008#2

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导入SQL Server,在我不传递日期之前它工作正常,但现在我想将日期传递给SQL Server,因为数据类型不匹配,所以它会提供错误


任何人都有逻辑,或者请建议我如何处理..

从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";
                }