我正在使用openxml,并且有一些东西将我的头发拉起来,基本上我正在编辑现有文档,它是一个模板,模板应该保留第一页和第二页,所以每一个部分我加(段落,表格等)应该在2页之间增加,我已经做到这一点,我可以插入一个简单的表格这样:将列表传递给列表<T>
DocTable docTable = new DocTable();
Paragraph paragraph = doc.MainDocumentPart.Document.Body.Descendants<Paragraph>()
.Where<Paragraph>(p => p.InnerText.Equals("some Text")).First();
Table table = docTable.createTable(Convert.ToInt16(2), Convert.ToInt16(2));
mainPart.Document.Body.InsertAfter(table, paragraph);
我basicly搜索在第1页的末尾添加段落,然后插入表格。我的问题是:我没有从frontEnd网页收到单个节,我收到了一个节的列表,我将这个列表定义为没有定义类型的对象列表,因为它可以有表,段落和其他东西。
所以basicly我有这样的:
List<Object> listOfSections = new List<Object>();
在接收来自前端部分,并确定它是一个像这样的关键是什么:
foreach (DocumentAtributes section in sections.atributes)
{
if(section.key != "Document")
{
checkSection(mainPart, section, listOfSections);
}
}
public void checkSection(MainDocumentPart mainPart,DocumentAtributes section,List<Object> listOfSections)
{
switch (section.key)
{
case "Table":
DocTable docTable = new DocTable();
Table table = docTable.createTable(Convert.ToInt16(section.rows), Convert.ToInt16(section.cols));
listOfSections.Add(new Run(table));
break;
case "Paragraph":
DocRun accessTypeTitle = new DocRun();
Run permissionTitle = accessTypeTitle.createParagraph(section.text, PARAGRAPHCOLOR, Convert.ToInt16(section.fontSize), DEFAULTFONT,section.align);
listOfSections.Add(permissionTitle);
break;
case "Image":
DocImage docImage = new DocImage();
Run image = docImage.imageCreatorFromDisk(mainPart, "abcd", Convert.ToInt16(section.width), Convert.ToInt16(section.height), section.align, null, null, section.wrapChoice, section.base64);
listOfSections.Add(image);
break;
}
}
我需要一种方法要将此列表添加到insertAfter,它必须是我无法添加单个对象的列表,因为在插入第一个后,下一个部分将添加到段落之后,或者它带给我一个问题,因为我希望订单成为与t中相同他分区。属性。
所以insertAfter接受一个列表,我有对象的列表的方法是这样的:insertAfter(列表,refChild)
我可以投我的对象列表或做其他事?这里需要一些帮助。
难道你不能只使用列表
没有,因为我从frontEnd收到一个复杂的json,它可以是任何东西 –
或至少我不知道更好的解决方案 –