我正在尝试使用open xml编辑word文档,但我没有取得令人满意的结果:
这是原始文件:
在这里,我得到一个句子来启动文件。在:
后我必须添加几行。
我想要的结果是这样的(出于某些原因,我不得不擦除屏幕上的一些数据,但这不会影响问题):
但我只得到这样的结果:
因此,在第三张图片中,文字不是中心,也没有任何标签。 另外,is不是粗体(如果不是下划线,那不是问题)。
但真正的问题是它保持对齐,没有标签,而它应该与标签对齐。
这是我的代码:
Text text = sdtFils.Descendants<Text>().FirstOrDefault();
string[] lst = variableCourrier.Tables[0].Rows[0][v_ligne["NOM_CHAMP"].ToString()].ToString().Split("$".ToCharArray());
Paragraph existPar = sdtFils.Descendants<Paragraph>().FirstOrDefault();
if (existPar == null)
{
existPar = sdtFils.Ancestors<Paragraph>().FirstOrDefault();
}
Run existRun = sdtFils.Descendants<Run>().FirstOrDefault();
foreach (string str in lst)
{
Paragraph p = new Paragraph();
ParagraphProperties pPr = new ParagraphProperties(new Tabs(new TabStop() { Val = TabStopValues.Center, Position = 7372 }),
new Justification() { Val = JustificationValues.Left },
new ParagraphStyleId() { Val = "Paragraphedeliste" },
new Indentation() { Start = (int.Parse(existPar.ParagraphProperties.Indentation.Left.Value) + int.Parse(existPar.ParagraphProperties.Indentation.FirstLine.Value)).ToString() });
string[] lstDetails = str.Split(";".ToCharArray());
int j = 0;
foreach (string strDetail in lstDetails)
{
if (!string.IsNullOrEmpty(strDetail))
{
TabChar tab = new TabChar();
Text t = new Text();
Run r = new Run();
RunProperties runPr = new RunProperties(new FontSize() { Val = existRun.RunProperties.FontSize.Val });
r.AppendChild(runPr);
t.Text = j == 0 ? "" + strDetail : " " + strDetail;
r.AppendChild(t);
if (j != lstDetails.Length - 1)
{
Break br = new Break();
r.AppendChild(br);
}
p.AppendChild(r);
j++;
}
}
text.Parent.Parent.Parent.Parent.InsertAfterSelf(p);
}
使用此代码,我将字符串的每个部分分开,以便我可以将它们放入它们的行中。
我认为不正确的部分是我定义Paragraph
元素时,但我不知道如何纠正它,以获得看起来像第二张图像的重复。< / p>
任何人都可以帮我这个吗?
如果不够清楚,请告诉我,我会编辑问题。
谢谢。
答案 0 :(得分:0)
您可以使用 Open XML SDK 2.5 Productivity Tool (请记住.docx文件是压缩成单个文件的XML文档集合),打开* .docx并单击反映代码以查看正确设置文档样式所需的代码。
此外,您还可以使用Open XML Package Editor for Visual Studio加载项,它提供了一种简单的方法来解析和编辑Open Packaging Conventions文件,包括Word,Excel,PowerPoint和Visio文档。
一切都是open source,可以在Github上找到。