6

Word ファイルからデータベースにデータを抽出/スクレイピングする方法を探しています。当社の企業手続きには、クライアントとの会議の議事録が MS Word ファイルで文書化されていますが、これは主に歴史と惰性によるものです。

これらの会議議事録からアクション アイテムをデータベースに取得して、Web インターフェイスからアクセスし、それらをタスクに変換し、完了時に更新できるようにしたいと考えています。

これを行う最良の方法は次のとおりです。

  1. Word内からVBAマクロでCSVを作成してからDBにアップロードしますか?
  2. DB に接続する Word の VBA マクロ (VBA から MySQL に接続するにはどうすればよいですか?)
  3. win32com 経由の Python スクリプトを DB にアップロードしますか?

WebインターフェイスはDjangoで構築されているため、最後のものは私にとって魅力的ですが、win32comを使用したことも、PythonからWordをスクリプト化しようとしたこともありません.

編集: Word オブジェクト モデルを扱うのが少し簡単になるので、VBA でテキストを抽出し始めました。私は問題を抱えています - すべてのテキストはテーブルにあり、必要なセルから文字列を引き出すと、各文字列の最後に奇妙な小さなボックス文字が表示されます。私のコードは次のようになります:

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

プログラムで Word 文書を HTML として保存し、含まれている表を Access にインポートすることができます。これにはほとんど手間がかかりません。

于 2009-02-03T12:46:49.440 に答える
0

ファイルをxmlとして保存するのはどうですか。次に、pythonなどを使用して、データを単語からデータベースに引き出します。

于 2009-02-03T04:23:52.480 に答える