Word Interop - 检查doc / x文件是否包含上标/下标文本或方程式

时间:2016-10-10 02:04:15

标签: c# ms-word office-interop

我正在构建一个Word文件内容分析器,我仍然坚持使用代码,关于如何检查doc / docx文件是否具有上标/下标方程式内容。

我到目前为止的代码是:

            WordApp = new Microsoft.Office.Interop.Word.Application();
            WordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
            WordApp.AutomationSecurity = MsoAutomationSecurity.msoAutomationSecurityForceDisable;
            WordApp.Visible = false;
            WordApp.Options.SaveInterval = 0;
            Document DocObj = WordApp.Documents.Open(FileName, OpenAndRepair: false, NoEncodingDialog: true, ConfirmConversions: false, ReadOnly: true, PasswordDocument: "dummy", PasswordTemplate: "dummy");

            PageCount = DocObj.ActiveWindow.ActivePane.Pages.Count;

我知道我必须使用Ranges()来选择范围,但我不知道如何处理它。

此外,等式是使用“插入/方程式”面板创建的等式。

1 个答案:

答案 0 :(得分:2)

如果您只想查看主要文档故事范围的任何部分(不包括页眉,页脚和其他WdStoryType),请执行以下操作:

var font = DocObj.Content.Font;
var hasSuperscripts = font.Superscript != 0;
var hasSubscripts = font.Subscript != 0;
var hasEquations = DocObj.OMaths.Count > 0;

返回int而非bool的大多数Word范围属性(如.Font.Superscript和.Font.Subscript)如果对整个范围都为真,则返回-1,如果它们为0则返回0对于整个范围是假的,如果它们仅对范围的一部分为真,则为9999999(wdUndefined)。

如果你想搜索其余的.StoryRanges

var hasSubscripts = DocObj.StoryRanges.Cast<Range>().Any(r => r.Font.Subscript != 0);
var hasSuperscripts = DocObj.StoryRanges.Cast<Range>().Any(r => r.Font.Superscript != 0);