2009-02-03 77 views
5

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

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

这是做到这一点的最好办法:创建CSV,然后上传到数据库从内字

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

最后一个对我来说很吸引人,因为使用Django构建了web界面,但是我从来没有使用过win32com或者尝试过从python脚本化脚本。

编辑:我已经开始使用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

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

它就像段落结尾的标记一样用来存储整个段落的格式。

只需使用左()函数来剥离出来,即

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 
0

我会说看看右边的相关问题 - > top one似乎有一些好的想法去蟒蛇路线。

+0

“在python中从MS word文件中提取文本”的问题是关于在linux环境中工作的。除了cygwin之外,在Windows下不提供像antiword这样的工具,而这个海报愿意做COM的COM脚本。 – 2009-02-03 04:00:24

+0

如果你没有什么好说的话...... 对这个问题的一些较高的投票答案根本不是linux特有的。我想你错过了那些。 – 2009-02-04 05:16:05

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 ? 

这是未经测试,但我认为这样的事情只会打开该文件并将其保存为纯文本(前提是你能找到合适的FILEFORMAT) - 那么你可以阅读文本Python和从那里操纵它。可能还有一种方法可以直接抓取文件的内容,但是我不知道它的影响;文档可能很难找到,但如果你有VBA文档或经验,你应该能够把它们贯穿。

查看此帖子前一阵子:http://mail.python.org/pipermail/python-list/2002-October/168785.html向下滚动到COMTools.py;那里有一些很好的例子。

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

0

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

1

你可以使用开发办公室。它可以打开word文件,也可以运行python宏。

0

有可能以编程方式保存一个Word文档以HTML格式并导入到包含访问表(一个或多个)。这需要很少的努力。