2012-01-05 80 views
0

正在使用Word Interop和adn C#在工作中构建一个程序,其中的一个功能获得了一个字数。使用c#interop从word文档获取格式

现在这不可能是Word字数,因为我需要模拟在工作中使用的CAT工具的字数。

我发现的一个问题是,CAT工具使用文本格式来分割单词。这意味着如果我有第一个词,并且上标为单词,那么单词将会计数一个单词(因为两个单词之间没有任何分隔),并且CAT工具根据文本格式更改计数2个单词。

事情是CAT工具跟踪格式变化和信息打破这个词。因此,我可以逐字逐句逐字逐句检查所有可能性(字体,粗体,斜体等),但是如果多个文档每个都有1000个单词,那么这将非常缓慢。

有谁知道更好的解决方案?

+0

您可以检查应用于文档的不同样式以及它们在哪里? – 2012-01-05 12:09:57

+0

哪个版本的Word - doc或docx?如果docx,你可以尝试解析XML。 – sq33G 2012-01-05 12:13:13

+0

Interop是强制性的吗? – Yahia 2012-01-05 12:16:52

回答

2

那么从MSDN论坛辛迪给我的答案就这一个

http://social.msdn.microsoft.com/Forums/en-US/worddev/thread/16fc1fb9-4713-45e5-ae00-76bbaafe0a56

那么的方法,我想看看是使用Document.Content.WordOpenXML到的内容解压到一个字符串。内容将采用Office Open XML“扁平封装”格式,这意味着它应包含所有内容。

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

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