файл, который вы пытаетесь открыть, находится в другом формате, чем указано в расширении файла в Asp.Net

файл, который вы пытаетесь открыть, находится в другом формате, чем указано при расширении файла c # при попытке открыть файл в excel.

Вот мой код

public ActionResult Export(string filterBy) { MemoryStream output = new MemoryStream(); StreamWriter writer = new StreamWriter(output, Encoding.UTF8); var data = City.GetAll().Select(o => new { CountryName = o.CountryName, StateName = o.StateName, o.City.Name, Title = o.City.STDCode }).ToList(); var grid = new GridView { DataSource = data }; grid.DataBind(); var htw = new HtmlTextWriter(writer); grid.RenderControl(htw); writer.Flush(); output.Position = 0; return File(output, "application/vnd.ms-excel", "test.xls"); } 

когда я пытаюсь открыть excel, я получаю эту ошибку

файл, который вы пытаетесь открыть, находится в другом формате, чем указано расширением файла

введите описание изображения здесь

После нажатия «Да» файл открывается правильно. но я не хочу, чтобы этот msg появлялся.

Я использовал CloseXML для решения проблемы.

 public static void ExportToExcel(IEnumerable<dynamic> data, string sheetName) { XLWorkbook wb = new XLWorkbook(); var ws = wb.Worksheets.Add(sheetName); ws.Cell(2, 1).InsertTable(data); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; HttpContext.Current.Response.AddHeader("content-disposition", String.Format(@"attachment;filename={0}.xlsx",sheetName.Replace(" ","_"))); using (MemoryStream memoryStream = new MemoryStream()) { wb.SaveAs(memoryStream); memoryStream.WriteTo(HttpContext.Current.Response.OutputStream); memoryStream.Close(); } HttpContext.Current.Response.End(); } 

Установил ClosedXML в моем проекте с помощью Nuget Package Manager .

файл, который вы пытаетесь открыть, находится в другом формате, чем указано расширением файла

Вы постоянно получаете это предупреждение, потому что созданный файл не является фактическим файлом excel. Если вы посмотрите на сгенерированный файл, это всего лишь куча html-тегов. Помните, что RenderControl GridView создаст таблицу html.

Чтобы исправить вашу проблему, вам нужно либо использовать сторонний инструмент, создающий реальный файл excel (один инструмент, который вы можете использовать, это NPOI ), либо создать файл с разделителями-запятыми или просто файл csv и вернуть этот файл.

В случае, если кто-то другой наткнется на это … Мне нужно было преобразовать капли обратно в файлы на лету в C #. Pdf работал хорошо, и excel дал мне ту же ошибку, что объясняет OP.

Это код, который я написал, который отлично обрабатывает другие типы файлов.

Предоставление excel-приложения / октетного потока с фактическим именем файла решило мою проблему. Наверное, не самый чистый способ сделать это, но это было достаточно хорошо для моих целей.

 string theExt = Path.GetExtension(theDoc.documentFileName).ToUpper(); Response.Clear(); if (theExt == ".XLS" || theExt == ".XLSX"){ Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", theDoc.documentFileName)); } else{ Response.ContentType = theDoc.documentMimeType; Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", theDoc.documentTitle)); } using (MemoryStream stream = new MemoryStream(theDoc.file)) { stream.WriteTo(Response.OutputStream); stream.Close(); }; Response.End(); 

Если кому-то нужно экспортировать набор данных в файл Excel с помощью CloseXML .

 Dataset ds = { your data from db } var xlsx = new XLWorkbook(); var dataTable = ds.Tables[0]; xlsx.Worksheets.Add(dataTable); xlsx.SaveAs("export.xlsx"); 
  • Создание файла Excel с помощью C # без инструмента Office
  • Excel не открывается .xls из C # StringBuilder
  • Имея некоторые проблемы с экспортом DataGridView Data для Excel
  • Экспорт SQL Server в Excel с помощью OPENROWSET
  • CodeIgniter: экспортировать данные из базы данных в excel и загрузить
  • Написание словаря в Excel в C #
  • Как экспортировать строки DataGridView с цветом строк в лист MS Excel?
  • Как экспортировать данные в Excel в MVC
  • большой экспорт datagridview в excel
  • Экспорт в Excel: программно создайте новый лист Excel
  • Bash Script для экспорта первых столбцов в txt-файле для Excel с заголовком
  • Давайте будем гением компьютера.