【问题标题】:Not able to copy specific pages of word document无法复制word文档的特定页面
【发布时间】:2019-03-04 09:19:40
【问题描述】:

我正在尝试剪切我的 word 文档 (.docx) 的特定页面,例如 2、4。我正在使用 for 循环遍历根据页面给出的拆分它基于 ,。下面是代码一样的

if (startEnd.Contains(','))
{
    arrSpecificPage = startEnd.Split(',');

    for (int i = 0; i < arrSpecificPage.Length; i++)
    {
        range.Start = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, arrSpecificPage[i]).Start;
        range.End = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, arrSpecificPage[i]).End;
        range.Copy();
        newDocument.Range().Paste();                    
    }
    newDocument.SaveAs(outputSplitDocpath);
}

但此代码的问题在于它只是将最后一页仅复制到新文档,即在这种情况下为4。如何也添加2?代码有什么问题?

【问题讨论】:

  • 是不是第一次粘贴后还是选中了粘贴的内容,所以第二次粘贴覆盖了第一次?如果是这样,您需要在每次粘贴后“取消选择”。
  • @Neil 我试图获取newDocument.unselect 但找不到它。该怎么做?
  • 问题解决了吗?你从来没有跟进...

标签: c# .net ms-word com document


【解决方案1】:

由于您总是将整个文档“范围”指定为目标,因此每次粘贴文档的整个内容都会被替换。

您使用Range 对象而不是选择是正确的,但是如果您考虑一个像选择这样的范围会有所帮助。如果您选择所有内容 (Ctrl+A) 然后粘贴,则选择的内容将替换为粘贴的内容。分配给 Range 的任何内容都将替换 Range 的内容。

解决此问题的方法是“折叠”范围 - 将其想象为按右箭头或左箭头键将选择“折叠”到其起点或终点。在对象模型中,这是Collapse 方法,它接受一个参数来指示是折叠到开始点还是结束点(参见下面的代码)。

请注意,我还更改了代码以使用 document.Content 而不是 Document.RangeContent 是返回整个文档正文的属性; Range 是一种方法,它需要定义 Range 的起点和终点。使用属性是整个文档的首选方法。

if (startEnd.Contains(','))
{
    arrSpecificPage = startEnd.Split(',');

    for (int i = 0; i < arrSpecificPage.Length; i++)
    {
        range.Start = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, arrSpecificPage[i]).Start;
        range.End = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, arrSpecificPage[i]).End;
        range.Copy();
        Word.Range targetRange = newDocument.Content
        targetRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
        targetRange.Paste();                    
    }
    newDocument.SaveAs(outputSplitDocpath);
}

【讨论】:

  • 我在range.Copy() 收到错误This method or property is not available because no text is selected. 如何更正?
  • @Lara 对于复制部分,我没有更改您的代码中的任何内容 - 我只在最后添加了一点点。这在您的原始代码中不起作用吗?你只提到它只复制最后一页......还是只在最后发生?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2015-05-13
  • 1970-01-01
相关资源
最近更新 更多