Why showing error message while opening .xls file

前端 未结 6 1372
自闭症患者
自闭症患者 2020-12-30 09:14

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 try

相关标签:
6条回答
  • 2020-12-30 09:49

    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

    • ClosedXML.dll
    • DocumentFormat.OpenXml.dll

    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();
                    }
         }
    
    0 讨论(0)
  • 2020-12-30 09:49

    You are using .xls in filename and .xlsx in the MIME type. Try with filname.xlsx.

    0 讨论(0)
  • 2020-12-30 09:52

    The alert is a new security feature in Excel 2007 called Extension Hardening, which ensures that the file content being opened matches the extension type specified in the shell command that is attempting to open the file. The current design does not allow you to open HTML content from a web site in Excel unless the extension of the URL is .HTM/.HTML/.MHT/.MHTML. So ASP pages that return HTML and set the MIME type to something like XLS to try to force the HTML to open in Excel instead of the web browser (as expected) will always get the security alert since the content does not match the MIME type.

    http://blogs.msdn.com/b/vsofficedeveloper/archive/2008/03/11/excel-2007-extension-warning.aspx

    0 讨论(0)
  • 2020-12-30 09:53

    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();
    
    0 讨论(0)
  • 2020-12-30 09:56

    Not sure how you are exporting data to excel. Setting the DisplayAlerts to false might help.

    xlApp = new Excel.Application();
    xlApp.DisplayAlerts = false;
    

    I use interop DLL. The namespace would be Microsoft.Office.Interop.Excel. See Feng Chen's answer in the following link on how to add the reference: http://social.msdn.microsoft.com/Forums/en/netfxsetup/thread/c9e83756-4ae2-4ed4-b154-1537f3bb3a22

    The following link might also help:

    http://www.dotnetperls.com/excel

    0 讨论(0)
  • 2020-12-30 09:59

    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.

    0 讨论(0)
提交回复
热议问题