Member 12133159 Ответов: 2

Проблема в файле excel, экспортированном через asp.net с#


Я использую этот код для экспорта данных GridView в excel, код работает нормально, но файл Excel не поддерживает некоторые операции; если я печатаю этикетки из этого файла, он показывает "Ошибка: внешняя таблица не находится в ожидаемом формате"
Что же делать???
Есть ли какой-либо способ экспортировать Excel просто или без какого-либо форматирования, поскольку excel имеет такое же форматирование, как и GridView...

Что я уже пробовал:

protected void btnExcel1_Click(object sender, ImageClickEventArgs e)
    {

        Response.ClearContent();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "ExcelSheet.xls"));
        Response.ContentType = "application/ms-excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        GridView1.AllowPaging = false;
        //Change the Header Row back to white color
        GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");
        //Applying stlye to gridview header cells
        for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
        {
            GridView1.HeaderRow.Cells[i].Style.Add("background-color", "#507CD1");
        }
        int j = 1;
        //This loop is used to apply stlye to cells based on particular row
        foreach (GridViewRow gvrow in GridView1.Rows)
        {
            gvrow.BackColor = Color.White;
            if (j <= GridView1.Rows.Count)
            {
                if (j % 2 != 0)
                {
                    for (int k = 0; k < gvrow.Cells.Count; k++)
                    {
                        gvrow.Cells[k].Style.Add("background-color", "#EFF3FB");
                    }
                }
            }
            j++;
        }
        GridView1.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.End();
    }

F-ES Sitecore

Вы не создаете файл Excel, вы просто пишете клиенту html-таблицу и говорите клиенту, что если у него установлен Excel, то он должен показать эту таблицу в виде рабочего листа. Если вы хотите создать реальный файл Excel, вам нужно будет использовать драйвер Excel ODBC, Open XML SDK или один из различных сторонних компонентов, поддерживающих создание файлов Excel.

Member 12133159

ОХК... Спасибо, что предупредили...
Не могли бы вы мне помочь, как это сделать???

F-ES Sitecore

Попробуй этот библиотека, там тоже есть примеры кода.

Carlos Gamerdinger

что является источником вашего представления сетки? зачем писать из gridview в excel и не создавать настоящий файл excel а не html файл в формате xls

Member 12133159

Источником GridView является SQLDatasource... И я не знаю, как создать настоящий excel, пожалуйста, помогите мне @Carlos или некоторые ссылки, где я могу учиться.....:)

2 Ответов

Рейтинг:
2

Bala1989

Пожалуйста, попробуйте ниже код

частный недействительными ExportGridToExcel()
{
Ответ.Четкий();
Ответ.Буфер = true;
Ответ.ClearContent();
Ответ.ClearHeaders();
Ответ.Кодировка = "";
строка FileName = "Vithal" +DateTime.Теперь+". xls";
StringWriter strwriter = новый StringWriter();
HtmlTextWriter htmltextwrtter = новый HtmlTextWriter(strwriter);
Ответ.Кэш.SetCacheability (HttpCacheability.NoCache);
Ответ.ContentType = " application/vnd. ms-excel";
Ответ.AddHeader ("Content-Disposition", "attachment;filename=" + FileName);
Управления gridview1.Сетки = Сетки.Оба;
Управления gridview1.HeaderStyle.Шрифт.Жирный = истина;
Управления gridview1.RenderControl(htmltextwrtter);
Ответ.Write (strwriter.Метод toString());
Ответ.Конец();

}
охраняемых недействительными btnExcel1_Click(объект отправителя, ImageClickEventArgs е)
{
ExportGridToExcel();
}


Member 12133159

Извините, но No....It это сохранение всей страницы...Вместо экспорта GridView

Member 12775895

я использую этот код, но лист excel не отображается, хотя ошибки не отображаются.stringwriter заполняется правильным значением.