使用C#将特定页面从一个Word文档复制到另一个Word文档

3

我通过这里的一个论坛,使用C#将一个word文档的内容复制到了另一个word文档中。 从word文件复制文字到新word文件

我使用了第二个解决方案。 这一部分处理了整个文档的复制以及格式的保留。

static MSWord.Document CopyToNewDocument(MSWord.Document document)
{
document.StoryRanges[MSWord.WdStoryType.wdMainTextStory].Copy();
var newDocument = document.Application.Documents.Add();
newDocument.StoryRanges[MSWord.WdStoryType.wdMainTextStory].Paste();
return newDocument;
}

现在我想指定一个页面范围,从用户那里获取起始页码和结束页码,并将所选范围单独复制到另一个Word文档中,同时保留格式... 非常感谢您的任何帮助.....
1个回答

2
您可能需要查看以下链接:http://social.msdn.microsoft.com/Forums/office/en-US/e48b3126-941d-490a-85ee-e327bbe7e81b/convert-specific-word-pages-to-pdf-in-c?forum=worddev,该链接展示了如何从Word文档中获取特定的页面范围(并保留格式)。
以下是相关部分(以防链接失效):
打开一个Word实例。
  Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

打开您的文档。在打开文件后,您需要为您的选择准备范围。Count和count2是您在特殊情况下提供的页面编号。

  object what = WdGoToItem.wdGoToPage;
  object which = WdGoToDirection.wdGoToFirst;
  object count = 1;
  Range startRange = word.Selection.GoTo(ref what, ref which, ref count, ref oMissing);
  object count2 = (int)count + 3;
  Range endRange = word.Selection.GoTo(ref what, ref which, ref count2, ref oMissing);
  endRange.SetRange(startRange.Start, endRange.End - 1);
  endRange.Select();

Selection.Copy()将所选页面复制到剪贴板,同时保留格式。

  word.Selection.Copy();

其余的源代码会创建一个新文档,将您的选择粘贴在其中。
  word.Documents.Add();
  word.Selection.Paste();

  object outputFileName = "d:\\test1.doc";
  object fileFormat = WdSaveFormat.wdFormatDocument97;

  word.ActiveDocument.SaveAs(ref outputFileName,
      ref fileFormat, ref oMissing, ref oMissing,
      ref oMissing, ref oMissing, ref oMissing, ref oMissing,
      ref oMissing, ref oMissing, ref oMissing, ref oMissing,
      ref oMissing, ref oMissing, ref oMissing, ref oMissing);

我希望这能对您有所帮助。

嗨@Thorias..首先,非常感谢您提供的解决方案..这似乎有效,但我有两个疑问。
  1. 我不知道如何使用这个对象what = WdGoToItem.wdGoToPage; object which = WdGoToDirection.wdGoToFirst;
  2. 格式在目标文档中保留,但每页都会添加额外的空格,并且页眉/页脚丢失。 在我提到的解决方案论坛中,整个文档都被复制,包括格式和页眉/页脚。 有什么解决方法可以在这里实现相同的效果吗?
再次感谢您...
- user3816807
@user3816807 你好。WdGoToItem.wdGoToPage和WdGoToDirection.wdGoToFirst是由Selection.Goto使用的枚举,以便它知道您想要选择从哪里开始。在这种情况下,Selection.Goto将在由“count”指定的页面顶部设置起始范围。我昨天进行了简短的测试,并没有遇到缺少页眉/页脚或添加到页面的额外空格的问题。很抱歉,我无法帮助您解决这个问题。 - Thorias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接