【问题标题】:Getting formatting from word documents using c# interop使用 c# interop 从 word 文档中获取格式
【发布时间】:2012-12-07 16:18:56
【问题描述】:

我正在使用 Word Interop 和 C# 来构建一个正在工作的程序,其中一个功能是计算字数。

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

我发现的一个问题是 CAT 工具使用文本格式来拆分单词。这意味着如果我的单词 1st 带有 st 上标,单词将计入一个单词(因为两者之间没有任何区别),并且 CAT 工具会根据文本格式的变化计入 2 个单词。

问题是 CAT 工具会跟踪格式更改,并且该信息会破坏单词。

所以,我可以逐字逐句地检查所有可能性(字体、粗体、斜体等),但是处理多个文档,每个文档都有 1000 多个单词,这会非常慢。

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

【问题讨论】:

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

标签: c# text formatting ms-word interop


【解决方案1】:

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

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

那么我要考虑的方法是使用 Document.Content.WordOpenXML 将内容提取到字符串中。内容将采用 Office Open XML“平面包”格式,这意味着它应该包含所有内容。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2014-04-07
    相关资源
    最近更新 更多