6

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

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

这是最好的方法:

  1. 从 Word 内部创建 CSV 然后上传到数据库的 VBA 宏?
  2. Word 中的 VBA 宏与 DB 的连接(如何从 VBA 连接到 MySQL?)
  3. Python脚本通过win32com然后上传到数据库?

最后一个对我很有吸引力,因为 Web 界面是用 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 是否有某种字符代码?

4

6 回答 6

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
于 2009-02-03T05:52:44.860 回答
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“签名”,然后将其作为一种文档进行查看。

于 2009-02-03T03:58:49.707 回答
1

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

于 2009-02-03T11:52:04.200 回答
0

我想说看看右边的相关问题 -->上面的问题似乎有一些关于走 python 路线的好主意。

于 2009-02-03T03:36:56.100 回答
0

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

于 2009-02-03T04:23:52.480 回答
0

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

于 2009-02-03T12:46:49.440 回答