Изменение имени файла после открытия загруженного файла excel в .Net C # MVC

Я пытаюсь экспортировать данные в Excel в свое приложение C # .Net MVC. Я использовал return file() в Actionresult . Файл возвращается и загружается успешно.

Но при открытии файла появляется ошибка, и имена файлов изменяются при их открытии. Загруженное имя файла – ExportFilterCRMdoctorRequest.xls но после его открытия оно меняется на Book1 . код для экспорта файла:

 public ActionResult ExportFilterCRMdoctorRequest() { var stream = new MemoryStream(); var serializer = new XmlSerializer(typeof(List<CDRFilterCRMDoctorRequest>)); //We load the data List<CDRFilterCRMDoctorRequest> data = (List<CDRFilterCRMDoctorRequest>)Session["filterCRMRequestList"]; //Retriving data from Session //We turn it into an XML and save it in the memory serializer.Serialize(stream, data); stream.Position = 0; //We return the XML from the memory as a .xls file return File(stream, "application/vnd.ms-excel", "ExportFilterCRMdoctorRequest.xls"); } 

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

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

Имя файла изменилось на «Book1»

Это называется упрочнением . Выполните шаги, чтобы избежать этой ошибки.

  1. Откройте свой реестр (Пуск -> Выполнить -> regedit.exe). Перейдите к
  2. HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Office \ 12.0 \ EXCEL \ SECURITY
  3. Щелкните правой кнопкой мыши в правом окне и выберите «Создать» -> «Тип DWORD»
  4. «ExtensionHardening» в качестве имени (без кавычек)
  5. Убедитесь, что данные имеют значение «0»

ЗАМЕТКА

Есть одна вещь, которую нужно иметь в виду при сериализации в XML. XML не является стандартным форматом Excel, и он должен открыть файл в виде XML-данных. Это означает, что при открытии файла он выдаст пару предупреждений, которые больше неприятны, чем что-либо еще.

Вернуться к исходному запросу: реплицирована ваша проблема, а ниже – исправление

Примерный класс

 public class StudentModel { public string Name { get; set; } public string Address { get; set; } public string Class { get; set; } public string Section { get; set; } } 

Пример данных

 private List<StudentModel> StudentData() { List<StudentModel> objstudentmodel = new List<StudentModel>(); objstudentmodel.Add(new StudentModel { Name = "Name1", Class = "1", Address = "Address1", Section = "A" }); objstudentmodel.Add(new StudentModel { Name = "Name2", Class = "2", Address = "Address2", Section = "A" }); return objstudentmodel; } 

Метод действия

 public ActionResult Index() { List<StudentModel> objstudent = new List<StudentModel>(); objstudent = StudentData(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='" + "1px" + "'b>"); //code section for creating header column sb.Append("<tr>"); sb.Append("<td><b><font size=2>NAME</font></b></td>"); sb.Append("<td><b><font size=2>CLASS</font></b></td>"); sb.Append("<td><b><font size=2>ADDRESS</font></b></td>"); sb.Append("<td><b><font size=2>SECTION</font></b></td>"); sb.Append("</tr>"); //code for creating excel data foreach (StudentModel item in objstudent) { sb.Append("<tr>"); sb.Append("<td><font>" + item.Name.ToString() + "</font></td>"); sb.Append("<td><font>" + item.Class.ToString() + "</font></td>"); sb.Append("<td><font>" + item.Address.ToString() + "</font></td>"); sb.Append("<td><font>" + item.Section.ToString() + "</font></td>"); sb.Append("</tr>"); } sb.Append("</table>"); HttpContext.Response.AddHeader("content-disposition", "attachment; filename=student_" + DateTime.Now.Year.ToString() + ".xls"); this.Response.ContentType = "application/vnd.ms-excel"; byte[] buffer = System.Text.Encoding.UTF8.GetBytes(sb.ToString()); return File(buffer, "application/vnd.ms-excel"); } 
  • При экспорте в Excel индекс был вне диапазона
  • Экспорт отчета IE для Excel с использованием VBA, где выпадающее меню экспорта существует
  • экспорт файла excel, но он находится в формате веб-страницы
  • Как установить столбцы gridviews как строку excel-файла, используя библиотеку Spout PHP
  • Экспорт значения с помощью Linebreaks в отдельную ячейку в Excel с помощью jQuery Datatables 2016
  • Информационный кадр Pandas с мультииндексером для Excel
  • C # экспортирует электронные письма, чтобы преуспеть в формах widndows, используя microsoft.office.interop.excel
  • Создание новых цветов в JExcelApi
  • Datatable to Excel Interop VS другие подходы; требуется всплывающее окно с Save As / Open
  • Реализация fpSpreadsheet Lazarus
  • Данные TextBox обрезаются при экспорте в Excel 2010 из SSRS 2008
  • Давайте будем гением компьютера.