【问题标题】:Copy specific pages from one word document to another word document using C#使用 C# 将特定页面从一个 word 文档复制到另一个 word 文档
【发布时间】:2014-07-08 14:49:33
【问题描述】:

我通过这里的论坛使用 C# 将一个 word 文档的内容复制到另一个 word 文档。 Copy text from word file to a new 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 文档中,同时保留格式。 对此的任何帮助将不胜感激.....

【问题讨论】:

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


    【解决方案1】:

    你可能想看看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 文档中获取特定范围的页面(保留格式)。

    相关部分(以防链接页面消失):

    打开一个单词的实例。

      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..首先,非常感谢这个解决方案..这似乎有效,除了我有2个澄清。 1.我不知道为什么以及如何使用这个对象what = WdGoToItem.wdGoToPage;对象 = WdGoToDirection.wdGoToFirst; 2. 格式保留在目标文档中,但在每一页中添加了额外的空格,并且页眉/页脚丢失了。在我提到的解决方案论坛中,文档被作为一个整体复制,包括格式和页眉/页脚任何解决方法在这里实现相同?再次,非常感谢...
    • @user3816807 Hi.WdGoToItem.wdGoToPage 和 WdGoToDirection.wdGoToFirst 是 Selection.Goto 使用的枚举,因此它知道您希望选择从哪里开始。在这种情况下,Selection.Goto 将在“count”指定的页面顶部设置开始范围。我昨天进行了一个简短的测试,没有发现缺少页眉/页脚或添加到页面的额外空格的问题。抱歉,帮不了你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多