2015-10-29 3 views
0

Я хочу экспортировать данные сетки непосредственно в Excel.Экспорт данных сетки asp в excel

Я попробовал «HtmlTextWriter», и это позволяет мне скачать файл. Но после загрузки я не могу открыть файл (ошибка выдачи Excel, что файл не в правильном формате.)

Я искал и обнаружил, что мне нужно сначала создать XML-файл, а затем экспортировать в Excel. Это так?

Или мне нужно сначала сохранить этот файл на моем сервере, а затем загрузить?

Или, если я могу использовать любой пакет NuGet, такой как ClosedXML или anyother, поможет.

+0

Простой файл [CSV] (https://en.wikipedia.org/wiki/Comm-separated_values). Как выглядит файл, который был создан htmltextwriter при открытии в блокноте? – rene

+0

Это похоже на наличие тегов

Palash

ответ

0

попробуйте следующий код на кнопку мыши

protected void btn_excel_Click(object sender, ImageClickEventArgs e) 
{ 
    try 
    { 

     Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls"); 
     Response.Charset = ""; 
     Response.ContentType = "application/vnd.ms-excel"; 
     using (StringWriter sw = new StringWriter()) 
     { 
      HtmlTextWriter hw = new HtmlTextWriter(sw); 

      //To Export all pages 
      GridView2.AllowPaging = false; 
      work(); // in this function you can bind GridView2 

      GridView2.HeaderRow.BackColor = Color.White; 
      foreach (TableCell cell in GridView2.HeaderRow.Cells) 
      { 
       cell.BackColor = GridView2.HeaderStyle.BackColor; 
      } 
      foreach (GridViewRow row in GridView2.Rows) 
      { 
       row.BackColor = Color.White; 
       foreach (TableCell cell in row.Cells) 
       { 
        if (row.RowIndex % 2 == 0) 
        { 
         cell.BackColor = GridView2.AlternatingRowStyle.BackColor; 
        } 
        else 
        { 
         cell.BackColor = GridView2.RowStyle.BackColor; 
        } 
        cell.CssClass = "textmode"; 
       } 
      } 

      GridView2.RenderControl(hw); 

      //style to format numbers to string 
      string style = @"<style> .textmode { } </style>"; 
      Response.Write(style); 
      Response.Output.Write(sw.ToString()); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 
    catch (Exception ex) 
    { 

    } 

} 
+0

Я уже пробовал. Но после загрузки excel бросает ошибку, что она не в правильном формате. – Palash

+0

, то ваше программное обеспечение имеет проблемы. вам нужно попробовать разные компьютеры. – Manraj

+0

Я становлюсь ниже ошибки. «Формат файла и расширение« GridViewExport.xlx »dosen't соответствуют. Файл может быть поврежден или небезопасен. Если вы не доверяете его источнику, не открывайте его. Вы все равно хотите его открыть? Если я открою файл, который я не могу увидеть несколько столбцов.Кроме того, у меня есть мой первый столбец, как флажок.Это создает проблему? – Palash

0

Самый простой способ будет захватить ClosedXML от NuGet, а затем получить данные, которые вы хотите экспортировать в DataTable, а затем использовать этот код ниже

XLWorkbook wb = new XLWorkbook(); 
DataTable dt = GetDataTableOrWhatever(); 
wb.Worksheets.Add(dt,"WorksheetName"); 
+0

Спасибо, звучит хорошо. Не могли бы вы помочь мне с еще большим кодом? – Palash

+0

@Palash будьте осторожны, чтобы не стать [помощью вампиров] (http: //meta.stackoverflow. com/questions/258206/what-is-a-help-vampire) – rene

+0

Я могу попробовать, если это связано с этим вопросом, обновите свой вопрос, иначе вам нужно будет спросить nother question –

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