Office中国论坛/Access中国论坛

标题: C#如何设置Word页脚? [打印本页]

作者: 刘苏    时间: 2016-4-9 00:38
标题: C#如何设置Word页脚?
Word页脚设置是个比较头疼的问题

在Word中录制宏难以产生代码,即使产生代码都不能直接执行,要转化成C#有点困难



需求:
奇偶页不同

奇数页  右对齐  微软雅黑  四号字体     格式:  - 1 -

偶数页  左对齐  微软雅黑  四号字体     格式: - 2 -

MSDN参考资料
https://msdn.microsoft.com/zh-cn/library/ms178795.aspx?cs-save-lang=1&cs-lang=csharp

望帮助!!

作者: tmtony    时间: 2016-4-9 07:59
Word还真没弄过,
你所说的 左对齐,右对齐 是针对此页所有内容,还是只是页码
作者: 刘苏    时间: 2016-4-9 09:25
tmtony 发表于 2016-4-9 07:59
Word还真没弄过,
你所说的 左对齐,右对齐 是针对此页所有内容,还是只是页码

页码
作者: tmtony    时间: 2016-4-9 12:13
int OddAndEvenPagesHeaderFooter {get; set;}
应该是整型
bool OddAndEvenPagesHeaderFooter { get; set; }
逻辑型
设置为-1 或 0 即可

[img]file:///D:\Users\tmtony\AppData\Local\Temp\8LDO48C$8@[GWU0353$FOVS.png[/img]https://msdn.microsoft.com/zh-cn/library/office/microsoft.office.interop.excel.pagesetup.oddandevenpagesheaderfooter.aspx
或 System.Boolean.  可出来值

晕 ,excel 和word 好像不同
excel是boolean
word是 int
[img]file:///D:\Users\tmtony\AppData\Roaming\Tencent\Users\18449932\QQ\WinTemp\RichOle\PZO[~UQVVZ1[Z%DCWF%H9}B.png[/img]

word你就用 int型
file:///D:\Users\tmtony\AppData\Roaming\Tencent\Users\18449932\QQ\WinTemp\RichOle\)EDTBF1%KCT8QCUVR5LBESP.png
可以为3种值
Can be True, False, or wdUndefined.
  
true 就是 -1
false 就是 0

实际上还是逻辑值,只是因为word还有个 wdUndefined
所以 要用 int
你填 1  或 -1 值
看看哪个可以
不行,再用int.parse
app.ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = int.Parse("-1");


作者: 刘苏    时间: 2016-4-9 12:16
tmtony 发表于 2016-4-9 12:13
int OddAndEvenPagesHeaderFooter {get; set;}
应该是整型
bool OddAndEvenPagesHeaderFooter { get; set ...

谢谢王站指导

页码设置的需求麻烦王站再帮忙看一下

Word录制宏有限制,有一些操作没法录制,弄起来也是蛮纠结的,加上英语不好
奇数页  右对齐  微软雅黑  四号字体     格式: - 1 -
偶数页  左对齐  微软雅黑  四号字体     格式: - 2 -
作者: tmtony    时间: 2016-4-9 12:56
你是说 设置 字体?
你把属性贴出来
作者: 闻启学    时间: 2016-4-9 22:47
Sub test()
    Application.ScreenUpdating = False
    With ActiveDocument.Sections(1)
        .PageSetup.OddAndEvenPagesHeaderFooter = True
        With .Footers(wdHeaderFooterPrimary)
            With .PageNumbers
                .Add PageNumberAlignment:=wdAlignPageNumberRight
                .NumberStyle = wdPageNumberStyleNumberInDash
            End With
            With .Range.Frames(1)
                .HorizontalPosition = wdFrameRight
                With .Range.ParagraphFormat
                    .Alignment = wdAlignParagraphRight
                    .CharacterUnitRightIndent = 1
                End With
            End With
        End With
        With .Footers(wdHeaderFooterEvenPages).Range.Frames(1)
            .HorizontalPosition = wdFrameLeft
            With .Range.ParagraphFormat
                .Alignment = wdAlignParagraphLeft
                .CharacterUnitLeftIndent = 1
            End With
        End With
    End With
    Application.ScreenUpdating = True
End Sub

在网上找到VBA 代码
作者: 刘苏    时间: 2016-4-9 23:23
闻启学 发表于 2016-4-9 22:47
Sub test()
    Application.ScreenUpdating = False
    With ActiveDocument.Sections(1)

谢谢····
作者: 刘苏    时间: 2016-4-9 23:23
C#代码 纠结了一天多,终于搞定了,感谢 @只为设计 全程指导

  1.             //关闭屏幕更新
  2.             app.ScreenUpdating = false;

  3.             //设置奇数页页脚
  4.             word.HeaderFooter secFooter = app.ActiveDocument.Sections[1].Footers[word.WdHeaderFooterIndex.wdHeaderFooterPrimary];
  5.             secFooter.PageNumbers.Add(PageNumberAlignment:word.WdPageNumberAlignment.wdAlignPageNumberInside);
  6.             secFooter.PageNumbers.NumberStyle = word.WdPageNumberStyle.wdPageNumberStyleNumberInDash;
  7.             secFooter.Range.Font.Name = "方正仿宋_GBK";
  8.             secFooter.Range.Font.Size = int.Parse("14");
  9.             
  10.             //设置奇偶页不同
  11.             app.ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = int.Parse("-1");

  12.             //设置偶数页页脚
  13.             word.HeaderFooter secEven = app.ActiveDocument.Sections[1].Footers[word.WdHeaderFooterIndex.wdHeaderFooterEvenPages];
  14.             secEven.PageNumbers.Add(PageNumberAlignment: word.WdPageNumberAlignment.wdAlignPageNumberOutside);
  15.             secEven.PageNumbers.NumberStyle = word.WdPageNumberStyle.wdPageNumberStyleNumberInDash;
  16.             secEven.Range.Font.Name = "方正仿宋_GBK";
  17.             secEven.Range.Font.Size = int.Parse("14");

  18.             //清除奇数页页眉横线
  19.             app.ActiveWindow.ActivePane.View.SeekView = word.WdSeekView.wdSeekPrimaryHeader;
  20.             app.Selection.ClearFormatting();

  21.             //清除偶数页页眉横线
  22.             app.ActiveWindow.ActivePane.View.SeekView = word.WdSeekView.wdSeekEvenPagesHeader;
  23.             app.Selection.ClearFormatting();

  24.             //退出页眉视图
  25.             app.ActiveWindow.ActivePane.View.SeekView = word.WdSeekView.wdSeekMainDocument;

  26.             //启用屏幕更新
  27.             app.ScreenUpdating = true;
复制代码

作者: tmtony    时间: 2016-4-10 12:15

强!
作者: 刘苏    时间: 2016-4-10 14:23
tmtony 发表于 2016-4-10 12:15
强!

说多了都是泪···· 各种纠结的源头 还是不熟悉对象。。 加强学习
作者: Access_study    时间: 2016-9-28 16:12
有完整学习资料不




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3