MS Word、OpenXML、PageSetup、方向和 4_方向边距

Jas*_*son 2 ms-word openxml c#-4.0

我用 OpenXML 制作了这个文档。. 我正在学习 OpenXML。哦。。太难了。

MainDocumentPart m = wd.AddMainDocumentPart();
m.Document = new Document();
Body b1 = new Body();
int myCount = 5;
for (int z = 1; z <= myCount; z++)
{
    Paragraph p1 = new Paragraph();
    Run r1 = new Run();
    Text t1 = new Text(
        "The Quick Brown Fox Jumps Over The Lazy Dog  " + z );
    r1.Append(t1);                      
    p1.Append(r1);
    b1.Append(p1);
}
m.Document.Append(b1);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想改变它的方向从纵向 - >横向并将其边距设置得更小。

加工前;

在此处输入图片说明

加工后; 在此处输入图片说明

我可以用这样的 VBA 代码实现这个目标;

With ActiveDocument.PageSetup
    .Orientation = wdOrientLandscape  
    .TopMargin = CentimetersToPoints(1.27)
    .BottomMargin = CentimetersToPoints(1.27)
    .LeftMargin = CentimetersToPoints(1.27)
    .RightMargin = CentimetersToPoints(1.27)
End With
Run Code Online (Sandbox Code Playgroud)

但是,当我进入 OpenXML 领域时,情况就大不相同了。

我可以有一些提示吗?

问候

pet*_*ids 5

您需要像这样使用SectionProperties,PageSizePageMargin类:

using (WordprocessingDocument wd = WordprocessingDocument.Create(filename, WordprocessingDocumentType.Document))
{
    MainDocumentPart m = wd.AddMainDocumentPart();
    m.Document = new Document();
    Body b1 = new Body();

    //new code to support orientation and margins
    SectionProperties sectProp = new SectionProperties();
    PageSize pageSize = new PageSize() { Width = 16838U, Height = 11906U, Orient = PageOrientationValues.Landscape };
    PageMargin pageMargin = new PageMargin() { Top = 720, Right = 720U, Bottom = 720, Left = 720U };

    sectProp.Append(pageSize);
    sectProp.Append(pageMargin);
    b1.Append(sectProp);
    //end new code

    int myCount = 5;
    for (int z = 1; z <= myCount; z++)
    {
        Paragraph p1 = new Paragraph();
        Run r1 = new Run();
        Text t1 = new Text(
            "The Quick Brown Fox Jumps Over The Lazy Dog  " + z);
        r1.Append(t1);
        p1.Append(r1);
        b1.Append(p1);
    }
    m.Document.Append(b1);
}
Run Code Online (Sandbox Code Playgroud)

请注意,页边距值以二十分之一点为单位定义。1.27cm 大约是 36 点,即 720 点的二十分之一。