繁体   English   中英

如何使用 C# Word interlop 获取 Word 文档中每一页上第一段的范围

[英]How to get the range of first paragraph on each page in Word Document using C# Word interlop

我有一个 9 页的 word 文件。

我用这个:

Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document wordDoc = wordApp.Documents.Open(file);
Microsoft.Office.Interop.Word.Range docRange = wordDoc.Range();

但是,这段代码会给我所有段落的范围。

如何使用 C# Word interlop 获取每页第一行(或第一段)中的文本范围?

对不起我的英语...

例如:在第一页我想获取文本:

Apple Inc. 是一家美国跨国科技公司,总部位于加利福尼亚州库比蒂诺,

或第一段

" Apple Inc. 是一家美国跨国科技公司,总部位于加利福尼亚州库比蒂诺,设计、开发和销售消费电子产品、计算机软件和在线服务。它被认为是与亚马逊、谷歌和谷歌并列的四大科技公司之一。微软。

在此处输入图像描述

第二页是:

我想要的文字:

Apple 由史蒂夫·乔布斯、史蒂夫·沃兹尼亚克和罗纳德·韦恩于 1976 年 4 月创立,旨在开发和销售

或者

苹果公司由史蒂夫·乔布斯、史蒂夫·沃兹尼亚克和罗纳德·韦恩于 1976 年 4 月创立,旨在开发和销售沃兹尼亚克的 Apple I 个人电脑,但韦恩在 12 天内卖回了他的股份。

在此处输入图像描述

您可以尝试遍历所有段落并获取页码。 然后是select页面第一段。

using Word = Microsoft.Office.Interop.Word;

private void FindFirstParagraphOfEachPage()
{
    Word.Application wordApp = new Word.Application();
    Word.Document wordDoc = wordApp.Documents.Open(filePath);
    Word.Range docRange = wordDoc.Range();

    var paragraphs = new List<Paragraph>();

    foreach (Word.Paragraph p in wordDoc.Paragraphs)
    {
        paragraphs.Add(new Paragraph()
        {
            PageNumber = (int)p.Range.get_Information(Word.WdInformation.wdActiveEndPageNumber),
            ParagraphText = p.Range.Text.ToString()
        });
    }
    var result = paragraphs.Where(x => !string.IsNullOrWhiteSpace(x.ParagraphText))
                        .GroupBy(x => x.PageNumber)
                        .Select(x => x.First());

    wordDoc.Close();
    wordApp.NormalTemplate.Saved = true;
    wordApp.Quit();
}

帮助程序 class 存储页码和段落文本。

class Paragraph
{
    public int PageNumber { get; set; }
    public string ParagraphText { get; set; }
}

我不确定释放这些对象。 它可能需要一些编辑和测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM