我想创建一个能够解析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文件所以我相信它是可能的如果我写正确的正则表达式。任何人都可以重定向我的文章,我怎么能做我想做的事情 - 我找不到任何适合我的东西,可能是我使用了错误的关键词......
答案 0 :(得分:3)
由于您说您有合理数量的数据,15个文档* 10页/ doc * ~100行/页= 15000行,这在word文档中是可管理的,并且您没有说这是重复数据Feed,即这是一次性转换,我会使用支持全局查找和替换并转换为逗号分隔变量格式的编辑器来完成。我知道的大多数数据库都可以加载CSV文件。
我知道您要求使用C#应用程序,但根据您的问题,时间和精力是否过度
所以
将'<start of line>'
转换为'<start of line>"'
用于查找和替换的MS Word
找到:^ p
替换:^&amp;“
将' - '
转换为'","'
用于查找和替换的MS Word
查找:' - '注意:不要添加刻度线。
替换:“,”
将'<end of line>'
转换为'"<end of line>'
用于查找和替换的MS Word
找到:^ p
替换:“^&amp;
手动修复第一行的开头和最后一行的结尾。
你应该得到
“par-000.01”,“一些内容”
“par-000.21”,“一些内容”
现在只需使用其CSV加载将其加载到数据库中。
此外,如果您坚持使用C#执行此操作,那么请注意您可以将文本保存为* .txt文件而不使用所有Word标记,并且使用C#应用程序拆分更容易。不要痴迷于Word标签,只需用创造性思维来解决问题。
答案 1 :(得分: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的开发人员布道者。