如何准备Word 2007文档,以便C#可以从语义上提取数据?

我有一个朋友在Microsoft Word 2007中写了一本400页的书

在整本书中,他有200个故事,每个故事由许多段落组成。

当他完成这本书的编写后,他希望将嵌入在他的Word文档中的每个故事的文本复制到数据库表中,例如:

Title, varchar(200) Description, text Content, text 

我们不希望将每个故事复制并粘贴到数据库中,但希望程序自动将标记的数据从Word文件中提取到数据库中的相应字段中。

  1. 他必须在Microsoft Word中将每组段落表示为“故事内容”,将每个标题表示为“故事标题”等。先决条件是此标记在文档中不可见。 我知道Word 2007文件基本上是压缩的XML文件所以我认为这是可能的,我认为样式表是我们需要的,但我如何准确地准备Word文档,以便在添加故事时正确标记它们?

  2. 我假设C#4.0的新COM Interopfunction是我需要分析Word文件并仅从嵌入式故事中检索标题,描述和内容,但我如何在技术上做到这一点? 有人有例子吗?

有没有人有经验做这样的项目(阅读Microsoft Word作为semnatic数据文件),他们可以分享?

我要做的是使用样式。 为每种类型的内容都有一种样式,并编写一个逐段遍历文档并吐出相应文本文件的宏。

好的,这可以通过多种方式解决。

首先,我建议您将文件保存为* .txt,以便解析一些纯文本。

然后,你的朋友在写作期间必须非常一致,因为你要创建的东西(文本解析器)需要一致性。

制定一些规则:

  1. 第一行标题,然后是2个换行符;
  2. 所有段落分开1个换行符;
  3. 然后是最后一段之后的3个换行符;

之后,加载文件,并使用上面的规则解析它。

{请享用}

以下是docx文档的xml,其中包含一个包含单词“Title”的标题和两个包含单词“Content”的段落。 在你的朋友写作时研究小说的样本文件,对所有标题和段落元素使用统一格式,你将能够很容易地解析它。内容在压缩的docx文件的word / document.xml中。

  TitleContentContent 

使用书签来启动和停止每个故事

我强烈建议这种技巧。

使用Word的书签function标记每个“故事”的开头和结尾。 要查看“书签”,请转到“Word选项”,“高级”,“显示文档内容”,然后选中“显示书签”。

然后只需浏览收集书签之间内容的文档。

从Word 6.x开始,我一直在使用相当简单的技术。 唯一的问题是必须提出200个书签名称。 然而,这可能是一个优点,因为书签名称可以迁移到数据库中的“名称”字段。

使用样式标记故事内容

另一种技术是定义构成故事的特定风格或风格。 然后,您提取样式。 这有点难,如果作者没有纪律,可能容易出错。

使用包含故事内容的文本框

最后,如果这些“故事”可以放在“文本框”中,您可以简单地提取文本框内容。 这种方法的问题是文本框和文档布局更改的限制,作者可能不会应用什么。

笔记

还有其他方法,但书签方法最容易使用和实现。 我会尽力回复您的任何意见/问题。

  • MSDN在http://social.msdn.microsoft.com/Search/en-US?query=vsto%20word%20bookmark&refinement=-112&ac=3上搜索“vsto word bookmark”

  • MSDN在http://social.msdn.microsoft.com/Search/en-US?query=vsto%20word%202007&refinement=-112&ac=3上搜索“vsto word 2007”