从MS Word中提取数据

Tec*_*ard 5 python vba ms-word pywin32 word-vba

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

我希望能够从这些会议纪要行动项目拉进一个数据库,以便我们可以从一个Web界面访问它们,把它们变成任务,因为他们完成了更新.

这是最好的方法:

  1. 从Word里面的VBA宏创建CSV然后上传到DB?
  2. VBA宏在Word中使用连接数据库(一个人如何从VBA连接到MySQL?)
  3. 通过win32com的Python脚本然后上传到DB?

最后一个是我的吸引力,因为网络界面正在使用Django建成的,但我从来没有使用win32com或蟒蛇试图脚本字.

编辑:我已经开始提取与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
Run Code Online (Sandbox Code Playgroud)

小控制字符框有什么用?是什么类型的字符代码来自Word?

Joe*_*sky 4

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

它的使用就像段落中的段落结束标记一样:存储整个段落的格式。

只需使用 Left() 函数将其删除即可,即

 Left(Target, Len(Target)-1))
Run Code Online (Sandbox Code Playgroud)

顺便说一句,而不是

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

尝试这个:

 For Each row in Application.ActiveDocument.Tables(2).Rows
      Descr = row.Cells(2).Range.Text
Run Code Online (Sandbox Code Playgroud)