[英]Excel cannot open the file because the file format or file extension is not valid. Verify that file has not been corrupted
I am trying to export into excel with xlsx
and xls
format but getting this error when trying to open the file. 我正在尝试以
xlsx
和xls
格式导出到excel,但是在尝试打开文件时遇到此错误。 Excel cannot open the file 'tms.xlsx'
because the file format or file extension is not valid. Excel无法打开文件
'tms.xlsx'
因为文件格式或文件扩展名无效。 Verify that file has not been corrupted and that the file extension matches the format of the file. 确认文件未损坏,并且文件扩展名与文件格式匹配。
public static void ExportToExcel(object allLists, string fileName, string driverName) { try { grid.DataSource = allLists; grid.DataBind(); RowCreated(); Header(fileName, driverName); HttpContext.Current.Response.ClearContent(); string FileName = String.Format(fileName + "-{0}", DateTime.Now.ToString("dd/MMM/yyyy")); HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + FileName + ".xls"); StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); //Applying style to grid view header cells for (int i = 0; i < grid.Rows.Count; i++) { for (int J = 0; J < grid.HeaderRow.Cells.Count; J++) { if ((grid.Rows[i].Cells[J].Text.Contains("-y@llow"))) { grid.Rows[i].Cells[J].BackColor = System.Drawing.Color.FromArgb(255, 255, 179); var val = Convert.ToString(grid.Rows[i].Cells[J].Text); if (val != null && val != "") { if (val.Contains("-y@llow")) { val = val.Replace("-y@llow", ""); grid.Rows[i].Cells[J].Text =Convert.ToString(val); } } } else if((grid.Rows[i].Cells[J].Text.Contains("-gr@en"))) { grid.Rows[i].Cells[J].BackColor = System.Drawing.Color.FromArgb(159, 223, 159); var val =Convert.ToString(grid.Rows[i].Cells[J].Text); if (val != null && val != "") { if (val.Contains("-gr@en")) { val = val.Replace("-gr@en", ""); grid.Rows[i].Cells[J].Text = Convert.ToString(val); } } } } } for (int i = 0; i < grid.HeaderRow.Cells.Count; i++) { grid.HeaderRow.Cells[i].Style.Add("background-color", "#337ab7"); grid.HeaderRow.Cells[i].Style.Add("color", "white"); } grid.RenderControl(htw); HttpContext.Current.Response.Write(sw.ToString()); HttpContext.Current.Response.End(); } catch (Exception) { //Response.End() will generate exception so, do not throw the exception here. //Response.Write(Ex.StackTrace); } }
Please check content type and extension. 请检查内容类型和扩展名。 You currently have
.xls
and application/vnd.ms-excel
. 您目前拥有
.xls
和application/vnd.ms-excel
。 The stated xlsx
requires the respective extension and 所述的
xlsx
需要相应的扩展名和
ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"`
To add a bit of context I use this as follows in an controller method that returns an ActionResult
为了添加一些上下文,我在返回
ActionResult
的控制器方法中按以下方式使用它
ActionResult ExportAsExcel(object input)
{
var fileData = ExcelExport.CreateExcelContent(input);
if (fileData == null || fileData.Length == 0)
{
ViewData["Message"] = "Could not create export file";
View("Error");
}
// File is of type Controller.File
return File(fileData, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "export.xlsx");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.