我在过去的两天里完成了我在这里搜索过的所有内容,只是为了让我的.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();
}
}
}
}
...我能够从" .xlsx"转换Excel文件。到了" .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"我尝试上传时文件打开,它也可以。现在,我只需要它就可以在没有文件打开的情况下工作。