Страница экспорта, которая включает изображения в Excel - PullRequest
1 голос
/ 31 июля 2009

У меня есть страница, которая содержит 2 gridview и 2 mschart. Я хочу экспортировать эту страницу, чтобы преуспеть. Для этого я взял эти элементы управления на панель и написал следующий код:

    Response.Clear();        
    Response.ContentType = "application/vnd.msexcel";
    Response.AddHeader("content-disposition", "attachment; filename=rapor.xls");
    Response.ContentEncoding = System.Text.Encoding.Default;
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    panel1.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();

Когда этот код запускается, все в порядке, кроме графиков. Они не приходят, чтобы преуспеть. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 05 августа 2009

Не уверен на 100%, но я предполагаю, что диаграммы записываются в память для отображения на странице, поэтому они исчезают после запроса.

HTML не позволяет встраивать изображение в код, вы должны ссылаться на внешний файл.

Опции:

  1. Проверьте, позволяет ли диаграмма записывать изображение на диск, но остерегайтесь большого количества временных файлов, которые вам, возможно, придется хранить, чтобы в отчетах Excel отображалось изображение
  2. (рекомендуется) Экспорт отчета в PDF.
0 голосов
/ 09 марта 2012

Попробуйте следующий код. Я проверил на local IIS, он работает правильно и включает в себя изображение типа Header Image/Logo поверх данных сетки. Вы должны включить свою диаграмму как изображения.

Response.ContentType = "application/vnd.ms-excel";        
Response.AddHeader("Content-Disposition", "attachment; filename=test.xls;");                
StringWriter stringWrite = new StringWriter();        
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);        
dgrExport.DataSource = dtExport;        
dgrExport.DataBind();
dgrExport.RenderControl(htmlWrite);
string headerTable = @"<Table><tr><td><img src=""D:\\Folder\\1.jpg"" \></td></tr></Table>";
Response.Write(headerTable);
Response.Write(stringWrite.ToString());        
Response.End();

Вы можете настроить высоту и ширину вашего изображения в соответствии с вашими требованиями. Для тега <TD> потребуется такая же высота и ширина.

...