1

我想创建一个能够解析该文件的 doc/docx 文件结构的应用程序,如下所示:

par-000.01 - some content
par-000.21 - some content
par-000.31 - some content
par-001.32 - some content

内容可以是多行而不是规则的。我想要做的是将这些内容放入数据库中,我的意思是第一条记录 -par-000.01放入code列和some content文本列。
我不能手动执行此操作的原因是我有大约 15 个文档,其中每个文档包含大约 10 页我想放入我的数据库的段落。
我找不到任何文章如何解析整个 doc 文件,所以我相信如果我编写正确的正则表达式是可能的。任何人都可以将我重定向到文章如何做我想做的事-我找不到任何适合我的东西,可能我使用了错误的关键词..

4

2 回答 2

3

既然你说你有合理的数据量,15 文档 * 10 页/文档 * ~100 行/页 = 15000 行这在 word 文档中是可以管理的,而且你没有说这是一个重复的数据馈送,即这是一次性转换,我会使用支持全局查找和替换并转换为逗号分隔变量格式的编辑器来完成。我知道的大多数数据库都可以加载 CSV 文件。

我知道您要求 C# 应用程序,但根据您的问题,这对于时间和精力来说是多余的

所以

  1. 使用查找和替换转换'<start of line>'为MS Word 查找 :^p 替换:^&" '<start of line>"'


  2. 使用 Find 和替换find转换' - '为MS Word :' - ' 注意:不要添加刻度线。 代替: ”,” '","'


  3. 使用查找和替换转换'<end of line>'为MS Word 查找 :^p 替换:“^& '"<end of line>'


  4. 手动修复第一行的开头和最后一行的结尾。

你应该得到

"par-000.01","一些内容"
"par-000.21","一些内容"

现在只需使用其 CSV 加载将其加载到数据库中。

此外,如果您坚持使用 C# 执行此操作,那么请意识到您可以将文本保存为 *.txt 文件而无需所有 Word 标签,并且使用 C# 应用程序拆分会容易得多。不要专注于单词标签,只需用创造性思维来解决问题。

于 2013-03-12T21:14:27.677 回答
0

您可以使用GroupDocs.Parser for .NET API在 C# 中自动解析 Word 文档(.doc 或 .docx) 。可以逐行或整体地从文档中提取文本。这就是你可以做到的。

// extracting all the text 
WordsTextExtractor extractor = new WordsTextExtractor("sample.docx");
Console.Write(extractor.ExtractAll());

// OR

// Extract text line by line
string line = extractor.ExtractLine();

// If the line is null, then the end of the file is reached
while (line != null)
{
      // Print a line to the console
      Console.Write(line);
      // Extract another line
      line = extractor.ExtractLine();
}

披露:我在 GroupDocs 担任开发人员布道师。

于 2019-09-19T07:13:36.530 回答