【问题标题】:c# interop Word insert landscape pagec# interop Word插入横向页面
【发布时间】:2019-03-11 10:38:59
【问题描述】:

我正在尝试将横向页面插入 Word 文档。但它将所有页面更改为横向。如何在我的 word 文档中只插入一个横向页面?

我的代码:

object wdSectionBreakNextPage = 2;
        //object pageBreak = 7; //el 7 es el tipo. https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word.wdbreaktype?view=word-pia
        rngDoc.Select();
        //rngDoc.InsertBreak(pageBreak);
        rngDoc.InsertBreak(wdSectionBreakNextPage);
        rngDoc.PageSetup.Orientation = WdOrientation.wdOrientLandscape;
        rngDoc.PageSetup.DifferentFirstPageHeaderFooter = 0;
        Microsoft.Office.Interop.Word.Paragraph para = rngDoc.Paragraphs.Add();
        para.Range.InsertParagraphAfter();

【问题讨论】:

    标签: c# ms-word office-interop landscape


    【解决方案1】:

    插入分节符是很好的第一步 - 这是必需的。

    问题出在这一行,我假设正在指导 Word 将页面方向应用于整个文档。 (您实际上并没有指定分配给 rngDoc 的内容,但您描述的行为表明它是整个文档。)

    rngDoc.PageSetup.Orientation = WdOrientation.wdOrientLandscape;
    

    如果它应该仅应用于新部分,则需要指定该部分。同样,我们不知道 rngDoc.Select() 实际上在做什么,因为我们没有上下文。在任何情况下,执行选择都是无关紧要的,并且不需要该行。大致如下:

    object objWdSectionBreakNextPage = 2; //Don't confuse with the actual enum name!
    //get the index number of the section where rngDoc is located
    int nrSections = rngDoc.Sections[1].Index; 
    rngDoc.InsertBreak(objWdSectionBreakNextPage);
    //set rngDoc to the new section
    rngDoc = Doc.Sections[nrSections + 1].Range;
    rngDoc.PageSetup.Orientation = WdOrientation.wdOrientLandscape;
    rngDoc.PageSetup.DifferentFirstPageHeaderFooter = 0;
    Microsoft.Office.Interop.Word.Paragraph para = rngDoc.Paragraphs.Add();
    para.Range.InsertParagraphAfter();
    

    【讨论】:

    • @cindy-mesiter 首先,对不起我糟糕的英语,感谢你的帮助。你是对的,rngDoc.Select() 是整个文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多