Комментарии 9
Подкину вам еще вариантик: можно использовать шаблоны вместе с Office Open XML или XSLT.
Office Open XML соперничает по сложности с RTF 2008 года, но, как вариант, все же приму. Спасибо
Согласен. Office Open XML это вынос мозга. Поэтому я про XSLT и побавил :)
Но не надо строить весь документ. Надо в Office сделать шаблон, а потом изменять и клонировать шаблонные значения. Просто, быстро.
Но не надо строить весь документ. Надо в Office сделать шаблон, а потом изменять и клонировать шаблонные значения. Просто, быстро.
Но есть библиотека closedXML, которая существенно проще
Еще, как вариант, можно воспользоваться готовым решением — RazorEngine
P.S. Надо обновлять комментарии перед отправкой :)
P.S. Надо обновлять комментарии перед отправкой :)
Еще один из вариантов — генерировать html через Html Agility Pack, подставив сперва в него html-шаблон.
Генерация пойдет примерно в такой форме (код 1С):
Генерация пойдет примерно в такой форме (код 1С):
элементШаблон = html.DocumentNode.SelectSingleNode("//table[@class='ProductItemTable']").OuterHtml;
parent = html.DocumentNode.SelectSingleNode("//div[@id='product-body']");
parent.RemoveAllChildren();
Счетчик = 0;
Для каждого строка из ИсточникДанных цикл
Если Не ЗначениеЗаполнено(строка.Номенклатура) тогда
Продолжить;
КонецЕсли;
item = net.CallStatic("HtmlAgilityPack.HtmlNode", "CreateNode", элементШаблон);
image = item.SelectSingleNode("//img");
image.SetAttributeValue("src", "index_files/" + (Счетчик % 5) + ".jpg");
image.SetAttributeValue("title", строка.Номенклатура.Наименование);
image.SetAttributeValue("alt", "Изображение " + строка.Номенклатура.Наименование);
item.SelectSingleNode("//td[@class='ProductsListDescriptionCol']").InnerHtml = строка.Номенклатура.Наименование + "<br/><br/>Группа - " + строка.Номенклатура.НоменклатурнаяГруппа;
item.SelectSingleNode("//span[@class='OldPrice']").InnerHtml = "" + строка.СтараяЦена + " руб.";
item.SelectSingleNode("//span[@class='DiscountPercent']").InnerHtml = "-" + строка.Скидка;
item.SelectSingleNode("//span[@class='YourPrice2']").InnerHtml = "" + строка.НоваяЦена + " руб.";
parent.AppendChild(item);
Счетчик = Счетчик + 1;
КонецЦикла;
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Использование Razor отдельно от ASP.NET MVC