Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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#asp.net中从excel读取到数据库的外部表格式异常_C#_Asp.net_Database_Excel_Import From Excel - Fatal编程技术网

c#asp.net中从excel读取到数据库的外部表格式异常

c#asp.net中从excel读取到数据库的外部表格式异常,c#,asp.net,database,excel,import-from-excel,C#,Asp.net,Database,Excel,Import From Excel,问题是: 我从excel工作表将数据导入数据库的代码对于.xls很有效,但是对于.xlsx它给出了“外部表不是预期的格式。”错误 请帮我做这个 我使用的连接字符串是: <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/> <add name="Exce

问题是: 我从excel工作表将数据导入数据库的代码对于.xls很有效,但是对于.xlsx它给出了“外部表不是预期的格式。”错误

请帮我做这个

我使用的连接字符串是:

<add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;  Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/>

<add name="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1}; IMEX=YES'"/> 

问一个明显的问题,您确定.xls和.xlsx文件的列标题完全相同吗?即,列标题等中没有意外的额外空格。?如果标题名称与查询不匹配,则您收到的错误消息很常见。是的,它们是相同的。要问明显的问题,您确定.xls和.xlsx文件之间的列标题完全相同吗?即,列标题等中没有意外的额外空格。?如果标题名称与查询不匹配,则您收到的错误消息很常见。是的,它们是相同的。要问明显的问题,您确定.xls和.xlsx文件之间的列标题完全相同吗?即,列标题等中没有意外的额外空格。?如果标题名称与查询不匹配,则您收到的错误消息很常见。是的,它们是相同的
   protected void Button2_Click(object sender, EventArgs e)
    {
        FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
        Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
        FolderPath = ConfigurationManager.AppSettings["FolderPath"];

        FilePath = FileUpload1.PostedFile.FileName; 
        Date = Calendar1.SelectedDate.ToShortDateString();

        ImportData();
    }
    void ImportData()
    {
        string conStr = "";
        switch (Extension)
        {
            case ".xls": //Excel 97-03
                conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"]
                 .ConnectionString;
                break;
            case ".xlsx": //Excel 07
                conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"]
                 .ConnectionString;
                break;
        }

        try
        {
            conStr = String.Format(conStr, FilePath, "YES");
            OleDbConnection Econ = new OleDbConnection(conStr);

            Econ.Open();
            //string Query = string.Format("Select [Id],[Name],[Status] FROM [{0}]", FileName);

            //string Query = string.Format("Select [Id],[Name],[Status] FROM [XYZ$]");
            string Query1 = string.Format("Select [Id],[Name],[Status] FROM [Sheet1$]");
            OleDbCommand Ecom = new OleDbCommand(Query1, Econ);

            DataSet ds = new DataSet();

            OleDbDataAdapter oda = new OleDbDataAdapter(Ecom);
            oda.Fill(ds);

            string sqlconn = ConfigurationManager.ConnectionStrings["TempDatabaseConnectionString"].ConnectionString;
            SqlConnection con = new SqlConnection(sqlconn);
            con.Open();
            DataTable Exceldt = ds.Tables[0];
            //creating object of SqlBulkCopy    
            SqlBulkCopy objbulk = new SqlBulkCopy(con);
            //assigning Destination table name    
            objbulk.DestinationTableName = "Trial";
            //Mapping Table column    
            objbulk.ColumnMappings.Add("Id", "Id");
            objbulk.ColumnMappings.Add("Name", "Name");
            objbulk.ColumnMappings.Add("Status", "Status");
            //inserting Datatable Records to DataBase    
            //con.Open();
            objbulk.WriteToServer(Exceldt);
            con.Close();
            ds.Clear();
            Econ.Close();
            Ecom.Parameters.Clear();
            objbulk.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }