2009-07-31 5 views
1

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

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(); 

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

ответ

1

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

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

Варианты:

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

Попробуйте следующий код. Я тестировал на 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> потребуются одинаковые настройки высоты и ширины.