В настоящее время я реорганизую консольное приложение, основной задачей которого является создание отчета на основе значений, хранящихся в базе данных.Как создать html-отчет без hardcoding html?
Пути я создание отчета до сезама теперь следующим образом:
const string format = "<tr><td>{0, 10}</td><td>
{1}</td><td>{2, 8}</td><td>{3}</td><td>{4, -30}</td>
<td>{5}</td><td>{6}</td></tr>";
if(items.Count > 0)
{
builder.AppendLine(
String.Format(format, "Date", "Id", "WorkItemId",
"Account Number", "Name", "Address", "Description"));
}
foreach(Item item in items)
{
builder.AppendLine(String.Format(format, item.StartDate, item.Id,
item.WorkItemId, item.AccountNumber,
String.Format("{0} {1}",
item.FirstName, item.LastName),
item.Address, item.Description));
}
string report = String.Format("<html><table border=\"1\">{0}
</table></html>",
builder.ToString());
(выше только образец ... и сожалеют о форматировании ... Я пытался отформатировать поэтому он не требует горизонтальной прокрутки ....)
Мне действительно не нравится, что я это сделал. Он работает и выполняет эту работу на данный момент ... но я просто не думаю, что он обслуживается ... особенно если отчет становится более сложным с точки зрения html, который необходимо создать. Хуже того, другие разработчики в моей команде обязательно скопируют и вставляют мой код для своих приложений, которые генерируют html-отчет и, вероятно, создадут ужасный беспорядок. (Я уже видел такие ужасы, которые возникли! Представьте функцию отчета, которая содержит сотни строк жестко запрограммированного sql, чтобы получить детали отчета ... его достаточно, чтобы заставить взрослого человека плакать!)
Однако, хотя Мне это совсем не нравится ... Я просто не могу придумать другого способа сделать это.
Несомненно, должен быть способ сделать это ... Я уверен в этом. Не так давно я делал то же самое при создании таблиц на страницах aspx, пока кто-то не показал мне, что я могу просто привязать объекты к элементу управления и позволить .NET позаботиться об рендеринге. Он превратил ужасный код, похожий на приведенный выше код, в две или три элегантные линии добра.
Кто-нибудь знает о подобном способе создания html для этого отчета без жесткого кодирования html?
Я попробую и посмотрю, как я пойду. Никогда не работал с XSLT раньше, так что мне потребуется немного времени, чтобы ускориться с ним ... Кроме того, я не буду выбирать ответ, пока не увижу его в действии ... – mezoid