Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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_C#_Asp.net Mvc_Visual Studio 2010 - Fatal编程技术网

C# 如何将同一Excel文件导入SQL Server

C# 如何将同一Excel文件导入SQL Server,c#,asp.net-mvc,visual-studio-2010,C#,Asp.net Mvc,Visual Studio 2010,我创建了一个asp.NETMVC4应用程序,并将其部署到web上 在这个应用程序中,我有一个控制器将一些Excel文件导入数据库 在本地主机上工作正常,但在服务器上,当我尝试导入与现有文件同名的文件时,会出现错误 (我看不到异常,我只看到一些好消息(catch…) 这是代码的一部分: if (Request.Files["file"].ContentLength > 0) { string fileExtension = System.IO.Path.GetExtension(Re

我创建了一个asp.NETMVC4应用程序,并将其部署到web上

在这个应用程序中,我有一个控制器将一些Excel文件导入数据库

在本地主机上工作正常,但在服务器上,当我尝试导入与现有文件同名的文件时,会出现错误

(我看不到异常,我只看到一些好消息(catch…)

这是代码的一部分:

if (Request.Files["file"].ContentLength > 0)
{
    string fileExtension = System.IO.Path.GetExtension(Request.Files["file"].FileName);

    if (fileExtension == ".xls" || fileExtension == ".xlsx")
    {
        string fileLocation = Server.MapPath("~/Content/") + Request.Files["file"].FileName;

        if (System.IO.File.Exists(fileLocation))
        {
            System.IO.File.Delete(fileLocation);
        }

        Request.Files["file"].SaveAs(fileLocation);

        string excelConnectionString = string.Empty;

        excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
        fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";

        //connection String for xls file format.
        if (fileExtension == ".xls")
        {
            excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
            fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
        }
        //connection String for xlsx file format.
        else if (fileExtension == ".xlsx")
        {
            excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
            fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
        }

        //Create Connection to Excel work book and add oledb namespace
        OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
        excelConnection.Open();

        DataTable dt = new DataTable();

        dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        if (dt == null)
        {
            return null;
        }

        String[] excelSheets = new String[dt.Rows.Count];
        int t = 0;

        //excel data saves in temp file here.
        foreach (DataRow row in dt.Rows)
        {
            excelSheets[t] = row["TABLE_NAME"].ToString();
            t++;
        }

        OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString);

        string query = string.Format("Select * from [{0}]", excelSheets[0]);

        using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, excelConnection1))
        {
            dataAdapter.Fill(ds);
        }

        excelConnection.Close();
    }

    if (fileExtension.ToString().ToLower().Equals(".xml"))
    {
        string fileLocation = Server.MapPath("~/Content/") + Request.Files["FileUpload"].FileName;

        if (System.IO.File.Exists(fileLocation))
        {
            System.IO.File.Delete(fileLocation);
        }

        Request.Files["FileUpload"].SaveAs(fileLocation);
        XmlTextReader xmlreader = new XmlTextReader(fileLocation);

        ds.ReadXml(xmlreader);
        xmlreader.Close();
    }
}

我的回答不知道具体的异常(如您所述,您自己无法看到异常)。在我类似的经历中,我遇到了相同的问题,并通过在服务器上安装Microsoft ACE OLEDB 12.0驱动程序解决了此问题。我安装了以下组件来解决此问题:

2007办公系统驱动程序-数据连接组件:


如果这样做没有帮助,更多关于您看到的异常的信息将有助于解决问题。

我想您我会回电告诉您这是否有效,但我认为这是最好的答案!!