我有一个有9页的单词文件。
我用这个:
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#单词互操作获取每一页第一行(或第一段)的文本范围?
抱歉我的英语..。
Ex:,在第一页,我想得到文本:
“苹果公司是一家总部设在加州库比蒂诺的美国跨国技术公司。
或第1段
苹果公司(
"Apple .)是一家总部设在加州库比蒂诺的美国跨国科技公司,设计、开发和销售消费类电子产品、计算机软件和在线服务。它被认为是四大科技公司之一,与亚马逊、谷歌和微软并驾齐驱。

第二页是:
我想要的案文:
苹果公司由史蒂夫·乔布斯、史蒂夫·沃兹尼亚克和罗纳德·韦恩于1976年4月创立,负责开发和销售
或
苹果公司是由史蒂夫·乔布斯、史蒂夫·沃兹尼亚克和罗纳德·韦恩于1976年4月创立的,目的是开发和销售沃兹尼亚克的Apple个人电脑,但韦恩在12天内卖掉了他的股份。

发布于 2020-04-24 20:23:34
您可以尝试遍历所有段落并获得页码。然后选择页面的第一段。
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 Paragraph
{
public int PageNumber { get; set; }
public string ParagraphText { get; set; }
}我不确定是否要释放这些物体。它可能需要一些编辑和测试。
https://stackoverflow.com/questions/61409376
复制相似问题