Как стать автором
Обновить

Комментарии 9

Подкину вам еще вариантик: можно использовать шаблоны вместе с Office Open XML или XSLT.
Office Open XML соперничает по сложности с RTF 2008 года, но, как вариант, все же приму. Спасибо
Согласен. Office Open XML это вынос мозга. Поэтому я про XSLT и побавил :)
Но не надо строить весь документ. Надо в Office сделать шаблон, а потом изменять и клонировать шаблонные значения. Просто, быстро.
Но есть библиотека closedXML, которая существенно проще
В отношении Excel — да.
Кстати, спасибо за библиотечку, у меня как раз была проблема с парсингом Экселевских файлов
Или так :)
Еще один из вариантов — генерировать html через Html Agility Pack, подставив сперва в него html-шаблон.
Генерация пойдет примерно в такой форме (код 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;
		
	КонецЦикла;

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории