Sas*_*.R. 3 c# ms-word openxml
我需要另一个帮助...我的导出功能将我的报告导出为一个表格.我需要为每个单元格应用水平对齐属性.我写的出口代码如下.Tbl是我在报告中使用的文本块.我在这里写了对齐代码.但是不起作用..请帮助我使用OpenXML SDk 2.0完成此任务
using Word = DocumentFormat.OpenXml.Wordprocessing;
WordprocessingDocument WordDoc = WordprocessingDocument.Create(SavePath, WordprocessingDocumentType.Document);
MainDocumentPart mainDocument = WordDoc.AddMainDocumentPart();
mainDocument.Document = new Word.Document();
StyleDefinitionsPart StylesDefs = mainDocument.AddNewPart<StyleDefinitionsPart>();
StylesDefs.Styles = new Word.Styles();
Word.Body body = new Word.Body();
Word.Table WordTable = new Word.Table();
Word.TableRow Row;
Word.TableCell Cell = new Word.TableCell();
Word.Style ParaStyle = new Word.Style(new Word.Name() { Val = Tbl.GetHashCode().ToString() });
Word.RunProperties ParaRunProperties = new Word.RunProperties();
ParaRunProperties.Append(new Word.RunFonts() { Ascii = Tbl.FontFamily.ToString() });
if (Tbl.HorizontalAlignment == HorizontalAlignment.Center)
ParaRunProperties.Append(new Word.Justification() { Val = Word.JustificationValues.Center });
else if (Tbl.HorizontalAlignment == HorizontalAlignment.Right)
ParaRunProperties.Append(new Word.Justification() { Val = Word.JustificationValues.Right });
else
ParaRunProperties.Append(new Word.Justification() { Val = Word.JustificationValues.Left });
ParaStyle.Append(ParaRunProperties);
StylesDefs.Styles.Append(ParaStyle);
Word.ParagraphProperties ParaProperties = new Word.ParagraphProperties() { ParagraphStyleId = new Word.ParagraphStyleId() { Val = Tbl.GetHashCode().ToString() } };
Cell.Append(new Word.Paragraph(ParaProperties, new Word.Run(new Word.Text(Tbl.Text))));
Row.Append(Cell);
WordTable.Append(Row);
body.Append(WordTable);
mainDocument.Document.Append(body);
mainDocument.Document.Save();
WordDoc.Close();
Run Code Online (Sandbox Code Playgroud)
您应该使用w:jc
paragraph(w:p
)属性(w:pPr
)的元素来定义所需的水平对齐:
<w:tr>
<w:tc><!-- your table cell -->
<w:p>
<w:pPr>
<w:jc w:val="right"/><!-- horizontal alignment = right -->
</w:pPr>
<w:r>
<w:t>Foo bar</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
Run Code Online (Sandbox Code Playgroud)
您始终可以将Word文档另存为OpenXML,将其重命名为.zip并将其解压缩以检查如何在OpenXML中执行某些操作.
谢谢鲁本斯·法里亚斯,
我的问题在这里解决了。代码中的小改动使其工作。问题是我为运行属性提供了对齐属性,而不是段落属性。
我将代码更改为
Word.ParagraphProperties ParaProperties = new Word.ParagraphProperties() { ParagraphStyleId = new Word.ParagraphStyleId() { Val = Tbl.GetHashCode().ToString() } };
if (Tbl.HorizontalAlignment == HorizontalAlignment.Center)
ParaProperties.Append(new Word.Justification() { Val = Word.JustificationValues.Center });
else if (Tbl.HorizontalAlignment == HorizontalAlignment.Right)
ParaProperties.Append(new Word.Justification() { Val = Word.JustificationValues.Right });
else
ParaProperties.Append(new Word.Justification() { Val = Word.JustificationValues.Left });
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题..再次感谢鲁本斯的帮助,通过您的帮助,我的错误被识别出来。