如何准备Word 2007文档,以便C#可以从语义上提取数据?
我有一个朋友在Microsoft Word 2007中写了一本400页的书 。
在整本书中,他有200个故事,每个故事由许多段落组成。
当他完成这本书的编写后,他希望将嵌入在他的Word文档中的每个故事的文本复制到数据库表中,例如:
Title, varchar(200) Description, text Content, text
我们不希望将每个故事复制并粘贴到数据库中,但希望程序自动将标记的数据从Word文件中提取到数据库中的相应字段中。
-
他必须在Microsoft Word中将每组段落表示为“故事内容”,将每个标题表示为“故事标题”等。先决条件是此标记在文档中不可见。 我知道Word 2007文件基本上是压缩的XML文件所以我认为这是可能的,我认为样式表是我们需要的,但我如何准确地准备Word文档,以便在添加故事时正确标记它们?
-
我假设C#4.0的新COM Interopfunction是我需要分析Word文件并仅从嵌入式故事中检索标题,描述和内容,但我如何在技术上做到这一点? 有人有例子吗?
有没有人有经验做这样的项目(阅读Microsoft Word作为semnatic数据文件),他们可以分享?
我要做的是使用样式。 为每种类型的内容都有一种样式,并编写一个逐段遍历文档并吐出相应文本文件的宏。
好的,这可以通过多种方式解决。
首先,我建议您将文件保存为* .txt,以便解析一些纯文本。
然后,你的朋友在写作期间必须非常一致,因为你要创建的东西(文本解析器)需要一致性。
制定一些规则:
- 第一行标题,然后是2个换行符;
- 所有段落分开1个换行符;
- 然后是最后一段之后的3个换行符;
之后,加载文件,并使用上面的规则解析它。
{请享用}
以下是docx文档的xml,其中包含一个包含单词“Title”的标题和两个包含单词“Content”的段落。 在你的朋友写作时研究小说的样本文件,对所有标题和段落元素使用统一格式,你将能够很容易地解析它。内容在压缩的docx文件的word / document.xml中。
Title Content Content
使用书签来启动和停止每个故事
我强烈建议这种技巧。
使用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”