在 Microsoft.Office.Interop.Word header 中添加不止一项

Adding More then one items in Microsoft.Office.Interop.Word header

所以在使用 Microsoft.Office.Interop.Word 自动生成字母时,我遇到的问题是 header 部分。每当我 运行 下面的代码只是替换所有页面上 header 中的第一个项目,而不是在不同行的所有页面的 header 上同时包含客户端名称和客户端地址,我刚拿到客户端地址

foreach (Section section in document.Sections)
                {
                    //Get the header range and add the header details.
                    var headerRange = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
                    var headerRange1 = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;

                    headerRange.Fields.Add(headerRange, WdFieldType.wdFieldPage);
                    headerRange1.Fields.Add(headerRange, WdFieldType.wdFieldPage);

                    headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    headerRange1.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    headerRange.Font.ColorIndex = WdColorIndex.wdBlack;
                    headerRange1.Font.ColorIndex = WdColorIndex.wdBlack;

                    headerRange.Font.Size = 12;
                    headerRange1.Font.Size = 12;

                    headerRange.Font.Name = "Arial";
                    headerRange1.Font.Name = "Arial";

                    headerRange.Font.Bold = 1;
                    headerRange1.Font.Bold = 1;

                    headerRange.Text =  ClientNameBox.Text;
                    headerRange.InsertParagraphAfter();
                    headerRange1.Text = ClientsAddressBox.Text;


                    headerRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
                    headerRange1.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;

                }

将范围想象成一个不可见的选择:如果您在内容被选中时键入内容,您键入的内容将替换所选内容。因此,如果您将某些内容分配给具有内容的范围,则您分配的内容将替换内容。您是否将相同的内容分配给两个单独的 Range 对象并不重要 - 因为它们都包含相同的起点和终点,改变一个会改变另一个。

与选择一样,范围的技巧是 "collapse" 它。要进行选择,请按箭头键;对于 Range,有一个 Collapse 方法,您可以在其中指定方向:到起点或终点。

foreach (Section section in document.Sections)
            {
                //Get the header range and add the header details.
                var headerRange = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;

                headerRange.Fields.Add(headerRange, WdFieldType.wdFieldPage);

                headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                headerRange.Font.ColorIndex = WdColorIndex.wdBlack;
                headerRange.Font.Size = 12;
                headerRange.Font.Name = "Arial";
                headerRange.Font.Bold = 1;
                headerRange.Text =  ClientNameBox.Text;
                headerRange.InsertParagraphAfter();

                object oCollapseEnd = WdCollapseDirection.wdCollapseEnd;
                headerRange.Collapse(ref oCollapseEnd);
                headerRange.Text = ClientsAddressBox.Text;

                headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
            }