在过去的两天里,我已经完成了我在这里搜索过的所有内容,只是为了让我的.xlsx Excel文件上传到DataTable并用作我的RadGrid数据源 . 这是我的代码......

private void ImportToGrid(string filePath, string hasHeaderRow)
    {
        string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1}';", filePath, hasHeaderRow);

        using (OleDbConnection excelConnection = new OleDbConnection(connectionString))
        {
            using (OleDbCommand excelCommand = new OleDbCommand())
            {
                excelConnection.Open();
                //Get the SheetName
                DataTable dtExcelSchema = new DataTable();
                dtExcelSchema = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();

                excelCommand.CommandText = "SELECT * From [" + sheetName + "]";
                excelCommand.Connection = excelConnection;

                using (OleDbDataAdapter oda = new OleDbDataAdapter())
                {
                    DataTable dt = new DataTable();
                    oda.SelectCommand = excelCommand;
                    oda.Fill(dt);
                    rgCalendarYear.DataSource = dt;
                    rgCalendarYear.DataBind();
                }
            }
        }
    }

...我能够将Excel文件从“.xlsx”转换为“.xls”,当我上传文件时一切正常,但我需要“.xlsx”文件才能工作 .

我在connectionString之前添加了一个@符号,我安装了Access数据库引擎2010,Access 2010运行时,我已经改变了connectionString的各种不同方式(包括IMEX = 1,IMEX = 0,Excel 8.0,Excel 12.0 Xml和其他解决方案中的所有其他内容 . )无论我做什么,我都会不断得到“外部表不是预期的格式” . 当我的“.xlsx”文件命中“excelConnection.Open();”时 . 同样,“ . xls”工作得很好,但“.xlsx”却没有 . 任何帮助将不胜感激 . 拜托,我有什么东西可以俯瞰吗?请不要第三方建议 .

编辑:我现在发现,如果我在尝试上传时打开“.xlsx”文件,它也能正常工作 . 现在,我只需要它在没有文件打开的情况下工作 .