在过去的两天里,我已经完成了我在这里搜索过的所有内容,只是为了让我的.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”文件,它也能正常工作 . 现在,我只需要它在没有文件打开的情况下工作 .