In my asp.net, C# application we are generating and downloading .xls file. But when I'm trying to open, it's giving a message
"The file you are trying to open, 'filename.xls', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?"
If I press 'Yes' it's opening. I changed the file extension to .xlsx, still same message. Can anyone tell me why this is happening? I've added .xlsx MIME type extension in IIS manager with MIME Type as application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
. Still it's showing the same message. Please suggest how can I get rid off it.
The file extension .xls (Version 2003) supports the HTML layout whereas office 2007 and above versions do not support it.
You must export the excel file to .xlsx format. From my experience it will then support it in all versions.
Add below DLLs into bin folder
Code to export file to .xlsx
DataTable dt = new DataTable();
//Create column and inser rows
using (XLWorkbook wb = new XLWorkbook())
{
var ws = wb.Worksheets.Add(dt, Sheetname);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Charset = "";
HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + p_FileName + ".xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(HttpContext.Current.Response.OutputStream);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
}
This one might be an old post, but I've been searching answers for the same issue, and thought it could be useful. It looks it's not related to the way your application gives the xls file to the browser. It's an issue with Office 2007 excess of security.
Microsoft's KB article 948615 explains it:
When you open a file in Excel 2007, you receive a warning that the file format differs from the format that the file name extension specifies.
The only solution is to add en entry to the client's registry. I know that's not a real solution for a web application maybe with hundreds of users, but at least you can add a note to the page telling how to fix that annoying warning.
Do you completely create the xls file or do you copy and fill a template xls file ? An incorrect format template file may cause the problem.
Also, what provider do you use to fill your file ? - Microsoft.ACE.OLEDB.12.0 for xlsx/xlsm ? - Microsoft.Jet.OLEDB.4.0 for xls ?
An incorrect provider/extension combination may cause the problem.
According to your comment, here is a part of code where I have done that in the past : ( commented some of the lines as I don't remember why they where useful )
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
//Response.ContentEncoding = Encoding.Default;
//Response.Charset="";
Response.AddHeader("Content-Disposition: ",
String.Format(@"attachment; filename={0}",myfileName));
//EnableViewState = false;
Response.Write(myFileContentAsString);
Response.Flush();
Response.Close();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With