GridView с изображениями, полученными из байтов - PullRequest
2 голосов
/ 03 мая 2011

Я хочу экспортировать одну таблицу gridview в формат Excel.
Самое простое и быстрое решение, которое я нашел, от Math Berseth
http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html

Это решение отлично работает и было принятоклиентомНо теперь, спустя несколько месяцев, была запрошена новая функция: «Просто поместите один логотип с изображением в Excel»

Это меня пугает.Я не могу поместить System.Drawing.Image в System.Web.UI.WebControls.Image, потому что они совершенно разные, но я не могу просто указать путь, потому что сгенерированный Excel будет отправляться по электронной почте.структура каталогов не может быть рассмотрена.

Итак, можно ли поместить изображения, полученные из байтов в Gridview, для экспорта в модель Math или существовать другим способом?

edit ..

Я прошёл ещё несколько шагов, но всё ещё далёк от своей цели.Я могу встраивать изображения в html-файлы, используя String Base64

Что-то вроде:

private string MakeImageSrcData(string filename) {
  FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
  byte[] filebytes = new byte[fs.Length];
  fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
  return "data:image/png;base64," + Convert.ToBase64String(filebytes, Base64FormattingOptions.None);
}

...

string base64 = MakeImageSrcData("D:\\Proj\\top_title.png");
TableRow tr = new TableRow();
TableCell tc = new TableCell();
Image logoEmpresa = new Image();
logoEmpresa.ImageUrl = base64;
tc.Controls.Add(logoEmpresa);
tr.Cells.Add(tc);
table.Rows.Add(tr);

Это прекрасно работает с IE и FF, но ничего сexcel: /

Я пробовал электронную таблицу xml, но, как MSDN описывает здесь , нет поддержки типа изображения.

Какая-то другая идея?

1 Ответ

1 голос
/ 03 мая 2011

Этот метод работает путем вывода вида сетки в виде текста, содержащего таблицу HTML.Я полагаю, вы можете добавить в строку строку, содержащую тег <img>, указывающий на ваш логотип где-нибудь на доступном веб-сайте.

Попробуйте.

Комментарий

Я добавил следующее перед строкой 61 в файле GridViewExportUtil.cs в указанной демонстрационной версии:

HttpContext.Current.Response.Write("<img src='http://localhost/WebApplication2/wand.gif' />");

Изображение было доступно по указанному URL-адресу и правильно отображалось в Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...