使用c#interop从word文档获取格式

使用c#interop从word文档获取格式,c#,text,formatting,ms-word,interop,C#,Text,Formatting,Ms Word,Interop,我正在使用Word Interop和C#构建一个正在运行的程序,其中的一个功能是获得字数 现在,这不能是单词计数,因为我需要模拟工作中使用的猫图尔的单词计数 我发现的一个问题是CAT工具使用文本格式来分割单词。这意味着,如果我有带st上标的单词1st,word将计算一个单词(因为两者之间没有任何分隔),CAT工具根据文本格式的更改计算两个单词 问题是CAT工具跟踪格式的变化,这些信息打破了文字的界限 因此,我可以逐字逐字地检查所有可能的选项(字体、粗体、斜体等等),但如果处理多个文档,每个文档都

我正在使用Word Interop和C#构建一个正在运行的程序,其中的一个功能是获得字数

现在,这不能是单词计数,因为我需要模拟工作中使用的猫图尔的单词计数

我发现的一个问题是CAT工具使用文本格式来分割单词。这意味着,如果我有带st上标的单词1st,word将计算一个单词(因为两者之间没有任何分隔),CAT工具根据文本格式的更改计算两个单词

问题是CAT工具跟踪格式的变化,这些信息打破了文字的界限

因此,我可以逐字逐字地检查所有可能的选项(字体、粗体、斜体等等),但如果处理多个文档,每个文档都有1000个单词,那么速度会非常慢


有人知道更好的解决方案吗?

MSDN论坛的Cindy给了我这个问题的答案

然后我将介绍的方法是使用Document.Content.WordOpenXML将内容提取到字符串中。内容将采用Office Open XML“扁平包”格式,这意味着它应该包含所有内容

然后,您应该能够“解析”字符串以获得所需的信息

如果查看这样一个字符串,您应该看到所有文本都在元素中。如果有格式设置,那么它将把文件分成几个部分——每个格式更改一个部分。因此,除了提取所有w:t元素之外,您需要做的就是检查标点符号和空格,否则它们会在文本中描绘“单词”


您可以检查应用于文档的不同样式以及它们在哪里吗?Word-doc或docx的哪个版本?如果是docx,您可以尝试解析xml。Interop似乎是我的最佳选择-知道更好的吗?doc、docx和rtf-可以是任何来自clientAny的关于如何检查样式的指针?找不到任何关于这个的信息