从MS Word中提取数据

时间:2009-02-03 03:27:54

标签: python vba ms-word word-vba pywin32

我正在寻找一种从Word文件中提取/抓取数据到数据库的方法。我们的公司程序与MS Word文件中记录的客户会议纪要,主要是由于历史和惯性。

我希望能够将这些会议记录中的操作项目提取到数据库中,以便我们可以从Web界面访问它们,将它们转换为任务并在完成后更新它们。

这是最好的方法:

  1. 从Word内部的VBA宏创建CSV然后上传到数据库?
  2. Word中与VBA连接的VBA宏(如何从VBA连接到MySQL?)
  3. Python脚本通过win32com然后上传到DB?
  4. 最后一个对我很有吸引力,因为网页界面是用Django构建的,但是我从未使用过win32com或尝试过使用python脚本编写Word。

    编辑:我开始使用VBA提取文本,因为这样可以更轻松地处理Word对象模型。我遇到了一个问题 - 所有文本都在表格中,当我将字符串拉出我想要的CELLS时,我会在每个字符串的末尾得到一个奇怪的小方块字符。我的代码如下:

    sFile = "D:\temp\output.txt"
    fnum = FreeFile
    Open sFile For Output As #fnum
    
    num_rows = Application.ActiveDocument.Tables(2).Rows.Count
    
    For n = 1 To num_rows
        Descr = Application.ActiveDocument.Tables(2).Cell(n, 2).Range.Text
        Assign = Application.ActiveDocument.Tables(2).Cell(n, 3).Range.Text
        Target = Application.ActiveDocument.Tables(2).Cell(n, 4).Range.Text
        If Target = "" Then
            ExportText = ""
        Else
            ExportText = Descr & Chr(44) & Assign & Chr(44) & _
                Target & Chr(13) & Chr(10)
            Print #fnum, ExportText
        End If
    Next n
    
    Close #fnum
    

    小控制字符框有什么用?某些字符代码是否来自Word?

6 个答案:

答案 0 :(得分:4)

Word有一个小标记,它放在表格中每个文本单元格的末尾。

它的使用方式与段落中的段落标记一样:用于存储整个段落的格式。

只需使用Left()函数将其剥离,即

 Left(Target, Len(Target)-1))

顺便说一句,而不是

 num_rows = Application.ActiveDocument.Tables(2).Rows.Count
 For n = 1 To num_rows
      Descr = Application.ActiveDocument.Tables(2).Cell(n, 2).Range.Text

试试这个:

 For Each row in Application.ActiveDocument.Tables(2).Rows
      Descr = row.Cells(2).Range.Text

答案 1 :(得分:1)

好吧,我从来没有编写Word脚本,但使用win32com做简单的事情很容易。类似的东西:

from win32com.client import Dispatch
word = Dispatch('Word.Application')
doc = word.Open('d:\\stuff\\myfile.doc')
doc.SaveAs(FileName='d:\\stuff\\text\\myfile.txt', FileFormat=?)  # not sure what to use for ?

这是未经测试的,但我认为这样的事情只会打开文件并将其保存为纯文本(假设您可以找到正确的文件格式) - 然后您可以将文本读入python并从那里操作它。也许有一种方法可以直接获取文件的内容,但我不知道它是什么;文档可能很难找到,但如果你有VBA文档或经验,你应该能够将它们传播。

不久前看一下这篇文章:http://mail.python.org/pipermail/python-list/2002-October/168785.html向下滚动到COMTools.py;那里有一些很好的例子。

您还可以运行makepy.py(pythonwin发行版的一部分)为可用的COM函数生成python“签名”,然后将其作为一种文档进行查看。

答案 2 :(得分:1)

您可以使用OpenOffice。它可以打开word文件,也可以运行python宏。

答案 3 :(得分:0)

我会说看右边的相关问题 - > top one似乎对于走python路线有一些好主意。

答案 4 :(得分:0)

如何将文件保存为xml。然后使用python或其他东西,将数据从单词中拉出并进入数据库。

答案 5 :(得分:0)

可以以编程方式将Word文档另存为HTML并导入Access中包含的表。这需要很少的努力。