我正在寻找一种从Word文件中提取/抓取数据到数据库的方法。我们的公司程序与MS Word文件中记录的客户会议纪要,主要是由于历史和惯性。
我希望能够将这些会议记录中的操作项目提取到数据库中,以便我们可以从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?
答案 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中包含的表。这需要很少的努力。