2014-03-13 3 views
2

Я могу генерировать файл excel из asp: table, но после генерации файла excel при открытии файла он дает предупреждение. файл, который вы пытаетесь открыть в другом формате, чем указано расширение файла я нашел решение этого предупреждения по этой ссылке http://www.aspsnippets.com/Articles/Solution-ASPNet-GridView-Export-to-Excel-The-file-you-are-trying-to-open-is-in-a-different-format-than-specified-by-the-file-extension.aspxПреобразование asp: Таблица в формат excel

так я использовал ClosedXML библиотеки, но при добавлении данных в Excel лист это прием датируемый , только формат набора данных, и я получил данные в строчном формате, поэтому он создает пустой лист excel. проверьте код, который я попробовал.

  LoadDetailsToTable(); 

      System.IO.StringWriter sw = new System.IO.StringWriter(); 
      System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw); 
      tbl_loctbl.RenderControl(hw); 
      using (XLWorkbook wb = new XLWorkbook()) 
      { 
       var ws = wb.Worksheets.Add("asd"); 
       ws.Cell(2, 1).InsertTable(sw.ToString()); 
       HttpContext.Current.Response.Clear(); 
       HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
       HttpContext.Current.Response.AddHeader("content-disposition", String.Format(@"attachment;filename=newfile.xlsx")); 

       using (MemoryStream MyMemoryStream = new MemoryStream()) 
       { 
        wb.SaveAs(MyMemoryStream); 
        MyMemoryStream.WriteTo(HttpContext.Current.Response.OutputStream); 
        MyMemoryStream.Close(); 
       } 
       HttpContext.Current.Response.End(); 
      } 

Здесь LoadDetailsToTable() Данные функции нагрузки к осине таблице. tbl_loctbl - это идентификатор таблицы.

ответ

0

К сожалению, две наценки, которые вы используете, несовместимы. Разметка HTML-таблицы в Excel поддерживается, но ее не в OpenXML, которую ожидает ваша библиотека.

Под капотом Excel ожидает действительный формат файла XML; html, хотя и поддерживается свободно, не является родным форматом xlsx.

Есть библиотеки, которые доступны будет конвертировать HTML в OpenXml в Интернете, однако это может быть решена путем перебора набора данных и на самом деле добавление ячеек и строк с помощью OpenXML SDK

Смежные вопросы