2009-02-03 82 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格式並導入到包含訪問表(一個或多個)。這需要很少的努力。