我正在尝试上传excel文件 . excel文件是XML格式 . 那是当我右键单击并编辑时,它显示XML格式 . 该文件的扩展名为.xlsx . 我得到的错误是“外部表不是预期的格式” .
我能够成功上传普通的Excel文件 .
我的连接字符串是 - Excel10ConString =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Extended Properties =”Excel 12.0; HDR = No; IMEX = 1;“”
private static DataTable GetExcelFileData(ExcelReaderRequest excelFileRequest)
{
if (excelFileRequest == null)
{
throw new ArgumentNullException("excelFileRequest");
}
string CommandText = string.Empty;
OleDbDataAdapter da = null;
string strMappedPath = DocumentManagementContext.ComponentSettings.MappedPath;
string sourcePath = string.Concat(strMappedPath, excelFileRequest.FileRelativePath);
string connectionString = excelFileRequest.FileExtension == ".xlsx" ? DocumentManagementContext.ComponentSettings.Excel10ConString : DocumentManagementContext.ComponentSettings.Excel07ConString;
string recordCount = excelFileRequest.MaxRecordCount == 0 ? string.Empty : string.Format("Top {0} ", excelFileRequest.MaxRecordCount + 1);
connectionString = string.Format(connectionString, sourcePath);
try
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
if (excelFileRequest.FileExtension == ".xlsx" || excelFileRequest.FileExtension == ".xls")
{
///// Getting the excel sheet name
DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string SheetName = dtSheetName.Rows[0]["TABLE_NAME"].ToString();
///// CommandText for excel files
CommandText = string.Format(@"SELECT {0}* FROM [{1}]", recordCount, SheetName);
}
else
{
throw new ServiceException("Invalid file");
}
using (OleDbCommand cmd = new OleDbCommand(CommandText, conn))
{
cmd.CommandType = CommandType.Text;
da = new OleDbDataAdapter(cmd);
using (DataTable dtTemp = new DataTable())
{
///// Satisfies rule: SetLocaleForDataTypes.
dtTemp.Locale = System.Globalization.CultureInfo.InvariantCulture;
da.Fill(dtTemp);
if (dtTemp != null)
{
using (DataTable dtexcelMain = CreateDataSetFromExcel(dtTemp))
{
dtexcelMain.Rows.RemoveAt(0);
return dtexcelMain;
}
}
}
}
}
return null;
}
catch (Exception Ex)
{
throw new ServiceException("Error in GetExcelFileData message : " + Ex.Message, Ex, ExceptionType.OtherHandledException, HttpStatusCode.InternalServerError, true, "PT1000");
}
finally
{
if (da != null)
{
da.Dispose();
}
}
}