【问题标题】:.net program to parse .doc file.net 程序来解析 .doc 文件
【发布时间】:2013-03-12 18:23:45
【问题描述】:

我想创建一个能够解析 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 文件,所以我相信如果我编写正确的正则表达式是可能的。任何人都可以将我重定向到文章如何做我想做的事-我找不到任何适合我的东西可能我使用了错误的关键词..

【问题讨论】:

  • 到目前为止你做了什么?
  • 实际上我现在可以逐行加载文件并将其存储在字符串生成器中的变量中。但是这种使用正则表达式的方式并不是很有效。
  • 如果您已经能够逐行阅读文档,为什么还需要正则表达式?只需找到分节符并保存即可?
  • 15 个文档,每个文档 10 页。您遇到了哪些性能问题?
  • 也许 Docx 库正是您要找的? docx.codeplex.com

标签: c# .net parsing docx doc


【解决方案1】:

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

我知道您要求使用 C# 应用程序,但根据您的问题,这对于时间和精力来说太过分了

所以

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

  2. ' - ' 转换为'","'
    用于 MS Word 的查找和替换
    find: ' - ' 注意:不要添加刻度线。
    替换:","

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

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

你应该得到

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

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

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

【讨论】:

  • 是的,只需将其保存为文本并从那里解析即可。
【解决方案2】:

您可以使用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 担任开发人员宣传员。

【讨论】:

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