2 longxianfu longxianfu 于 2014.12.14 14:15 提问

C# word 2007 奇偶页问题

oWord.ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = -1; //奇偶页不同
object oFirstPage = true;
object leftAlign = Word.WdPageNumberAlignment.wdAlignPageNumberLeft;
object rightAlign = Word.WdPageNumberAlignment.wdAlignPageNumberRight;

//奇数页右对齐
oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers.Add(ref rightAlign, ref oFirstPage);
oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers.NumberStyle = Word.WdPageNumberStyle.wdPageNumberStyleArabic;

//偶数页左对齐
oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.Add(ref leftAlign, ref oFirstPage);
oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.NumberStyle = Word.WdPageNumberStyle.wdPageNumberStyleArabic;

问题: 结果是页码全左对齐 ,奇偶页没起效果,但是我是分了奇偶页的,如果是我只添加偶数页的页码时,却把奇数页的页码也给添加了

但是下面的那段又是有效的

oWord.ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = -1; //奇偶页不同

oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.InsertBefore("Section 1 Odd Header");
oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;

oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].Range.InsertBefore("Section 1 Even Header");
oWord.ActiveDocument.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;

这个页码问题 折腾我好几天了,网上没找到相关答案,求达人解惑啊

2个回答

save4me
save4me   Ds   Rxr 2014.12.15 09:47
已采纳

对齐常量修改成下面的就可以了
object leftAlign = Word.Word.WdPageNumberAlignment.wdAlignPageNumberInside;
object rightAlign = Word.Word.WdPageNumberAlignment.wdAlignPageNumberOutside;

save4me
save4me 我测试的时候没有,你看看是不是代码中其他地方有设置过
接近 3 年之前 回复
save4me
save4me 我测试的时候没有,你看看是不是代码中其他地方有设置过
接近 3 年之前 回复
longxianfu
longxianfu 保存后还是有,有清空的办法吗
接近 3 年之前 回复
save4me
save4me 你说的页眉的那个好像默认进入页眉编辑状态就有,退出编辑模式其实是没有的。
接近 3 年之前 回复
longxianfu
longxianfu 还有页眉出现了横线和一个回车,这是怎么弄出来的,我没添加页眉啊
接近 3 年之前 回复
longxianfu
longxianfu 效果出来了,leftAlign 确是向右,rightAlign确是向左
接近 3 年之前 回复
save4me
save4me   Ds   Rxr 2014.12.15 11:46

我是直接在C#测试的,不是VSTO
实现引用: using Word = Microsoft.Office.Interop;

函数调用:Footer(@"test.docx");

Footer函数

    public static void Footer(string filePath)
    {
        Word.Word.Application wordApp = new Word.Word.Application();
        Word.Word.Documents docs = wordApp.Documents;

        object filePathName = filePath;
        object missing = Type.Missing;

        Word.Word.Document doc= docs.Open(
            ref filePathName,
            ref missing, // confirmconversions,
            ref missing, // readOnly,
            ref missing, // addtoRecentFiles,
            ref missing, // passworddOc,
            ref missing, // passwdTemplate,
            ref missing, // revert,
            ref missing, // writePasswordDoc,
            ref missing, // writePasswordTemplate,
            ref missing, // format,
            ref missing, // encoding,
            ref missing // visible,
        );

        doc.PageSetup.OddAndEvenPagesHeaderFooter = -1; //奇偶页不同
        object oFirstPage = true;
        object leftAlign = Word.Word.WdPageNumberAlignment.wdAlignPageNumberInside;
        object rightAlign = Word.Word.WdPageNumberAlignment.wdAlignPageNumberOutside;

        //奇数页右对齐
        doc.Sections[1].Footers[Word.Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers.Add(ref rightAlign, ref oFirstPage);
        doc.Sections[1].Footers[Word.Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers.NumberStyle = Word.Word.WdPageNumberStyle.wdPageNumberStyleArabic;
        //偶数页左对齐
        doc.Sections[1].Footers[Word.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.Add(ref leftAlign, ref oFirstPage);
        doc.Sections[1].Footers[Word.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.NumberStyle = Word.Word.WdPageNumberStyle.wdPageNumberStyleArabic; 

        wordApp.Documents.Save(ref missing,ref missing);
        wordApp.Documents.Close(ref missing,ref missing,ref missing);
        wordApp.Quit(ref missing, ref missing, ref missing);
    }
save4me
save4me 不客气,很高兴问题解决了
接近 3 年之前 回复
longxianfu
longxianfu 恩 确实是你说的那样 ,在编辑的时候会出现也没横线和回车,编辑完后就没有了,之前不知道情况,然后在网上找了一个删除页眉横线的方法,页眉横线是删除了 ,保存后回车还在,然后我将该方法删除后,就只有在编辑的时候有了,重新保存后是没有的,非常感谢啊
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片