.net Docx文件字数(包括脚注/尾注)

chhqkbe1  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(87)

我需要根据ms word中提供的统计数据获取docx文件的字数(查看-〉字数)x1c 0d1x
到目前为止,我试着在. Net中使用Aspose.Words和OpenXml,这两个工具都使用BuiltInProperties或ExtendedProperties提供字数统计。
开放XML

var appPart = wordprocessingDocument.ExtendedFilePropertiesPart;

假设

var wordCountValue = document.BuiltInDocumentProperties.FirstOrDefault(x => x.Name == "Words")?.Value;

然而,如果上面提供的复选框是“未选中”,那么脚注/尾注单词不被这两个框架计算在内。
我需要确保脚注/尾注始终被计算在内。我无法根据提取的文本自己计算字数,因为与ms字数统计相比,它不容易获得闭合匹配。有什么方法可以获得此计数?或者有什么方法可以确认统计中提供的复选框是否“选中”?

hjzp0vay

hjzp0vay1#

BuiltInDocumentProperties.Words实际返回从文档读取的值。请参见DOCX文档中的app.xml

<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
    <Template>Normal.dotm</Template>
    <TotalTime>1</TotalTime>
    <Pages>1</Pages>
    <Words>1</Words>
    <Characters>9</Characters>
    <Application>Microsoft Office Word</Application>
    <DocSecurity>0</DocSecurity>
    <Lines>1</Lines>
    <Paragraphs>1</Paragraphs>
    <ScaleCrop>false</ScaleCrop>
    <Company></Company>
    <LinksUpToDate>false</LinksUpToDate>
    <CharactersWithSpaces>9</CharactersWithSpaces>
    <SharedDoc>false</SharedDoc>
    <HyperlinksChanged>false</HyperlinksChanged>
    <AppVersion>16.0000</AppVersion>
</Properties>

如果文档是由某个外部工具生成的,则可能不会计算文档中的字数。除非显式调用Document.UpdateWordCount方法,否则Assoce.Words不会更新字数。
上述复选框值作为<w:doNotIncludeSubdocsInStats/>标记存储在settings.xml中(如果未选中)。Assoce.Words在调用Document.UpdateWordCount方法时会考虑此标记。但遗憾的是,没有公共API来获取或设置此标记。
您可以在Aspose.Words support forum中发布功能请求,以添加DoNotIncludeSubdocsInStats标志的API。

相关问题