У меня есть требование, чтобы мой код на C # генерировал список элементов из базы данных, которые на самом деле являются инструкциями к заказу, т.е. как разместить заказ.Этот нумерованный список будет содержать некоторые гиперссылки и коды скидок, выделенные жирным шрифтом.
Я не уверен, как взять этот список и преобразовать его в нумерованный список слов с правильным форматированием.Любая помощь, пожалуйста.Пример списка приведен ниже:
- Перейдите к http://www.google.com/ordername/basket.aspx?quantity=1&productId=23334
- Введите код обновления: DG% $ 2 & * JH и нажмитеКнопка «Обновить».
- Выполните процедуру оформления заказа и оплатите, используя выбранный вами метод.
Все это генерируется во время выполнения, и значения поступают изDB
Я пытался использовать Open XML Productivity Tool
для получения кода, но слишком сложно, когда каждый элемент списка над ним делился на несколько частей, а затем добавлялся.
Также мне нужен этот список в серединеdocument - используя .dotx здесь.
Код, который я пробовал, который частично работает без каких-либо гиперссылок и полужирного текста, приведен ниже:
private static void AddBulletList(List<Run> runList, MainDocumentPart mainDocumentPart)
{
Body body = mainDocumentPart.Document.Body;
Paragraph parentPara = body.Descendants<Paragraph>().FirstOrDefault(k => k.InnerText.Contains("text after which I need numbered list"));
Paragraph emptyPara = new Paragraph(new Run(new Text("")));
parentPara.InsertAfterSelf(emptyPara);
NumberingDefinitionsPart numberingPart = mainDocumentPart.NumberingDefinitionsPart;
var numberId = numberingPart.Numbering.Elements<NumberingInstance>().Count() + 1;
foreach (Run runItem in runList)
{
// Create items for paragraph properties
var numberingProperties = new NumberingProperties(new NumberingLevelReference() { Val = 0 }, new NumberingId() { Val = numberId });
var spacingBetweenLines1 = new SpacingBetweenLines() { After = "60" }; // Get rid of space between bullets
var indentation = new Indentation() { Left = "720", Hanging = "360" }; // correct indentation
ParagraphMarkRunProperties paragraphMarkRunProperties1 = new ParagraphMarkRunProperties();
RunFonts runFonts1 = new RunFonts() { Ascii = "Arial", HighAnsi = "Arial", EastAsia = "Calibri", ComplexScript = "Arial" };
FontSize fontSize1 = new FontSize() { Val = "20" };
FontSizeComplexScript fontSizeComplexScript1 = new FontSizeComplexScript() { Val = "20" };
paragraphMarkRunProperties1.Append(runFonts1);
paragraphMarkRunProperties1.Append(fontSize1);
paragraphMarkRunProperties1.Append(fontSizeComplexScript1);
// create paragraph properties
var paragraphProperties = new ParagraphProperties(numberingProperties, spacingBetweenLines1, indentation, paragraphMarkRunProperties1);
// Create paragraph
var newPara = new Paragraph(paragraphProperties);
// Add run to the paragraph
newPara.AppendChild(runItem);
// Add one bullet item to the body
//body.AppendChild(newPara);
emptyPara.InsertAfterSelf(newPara);
}
}