2012-10-27 10 views
5

私は単語の文書(2003)を持っています。私はPowershellを使って文書の内容を解析しています。 文書には、一番上に数行のテキストがあり、列数が異なる12の表があり、さらにテキストがいくつか含まれています。テーブルなどで単語文書(* .doc)の内容を読む

私は以下のようなものとして文書を読むことができることを期待:

  1. 読取原稿(など、必要なオブジェクトを作る)
  2. テーブルの一部でない場合は、テキスト
  3. の各ラインを取得します。テーブル
  4. の一部は、(順序で)テーブル番号を取得し、COLに基づいて出力を解析する場合は、テキストなどのプロセスや他の
  5. をアウトプットに書きます

以下は、私が書くために始めているPowerShellスクリプトでumns

  • エンド場合:

    $objWord = New-Object -Com Word.Application 
    $objWord.Visible = $false 
    $objDocument = $objWord.Documents.Open($filename) 
    $paras = $objDocument.Paragraphs 
    foreach ($para in $paras) 
    { 
        Write-Output $para.Range.Text 
    } 
    

    は、段落は、私が欲しいものであるかどうかはわかりません。私の目的に適したものはありますか? 私が今得ているのは、文書の内容全体です。どのように私が得るものを制御するのですか?私は行を取得したいのと同じように、それがテーブルの一部であるかどうかを判断し、それが何番目のテーブルに基づいてアクションを取ることができるようにします。

  • +1

    Word文書は、行に編成されていません。解決策として認識しているものではなく、解決しようとしている問題について説明してください。 –

    +0

    ありがとうございます - お返事ありがとうございました... 私は、このテキストにはテキストと約5〜6個の表が含まれています。各表には2〜6のさまざまな数の列があります。各表の最初の行にヘッダーが記載されています。 私が達成しようとしているのは、(Powershellを使用して)ドキュメントを読み込み、Oracleデータベースに対して個別に実行できるテーブルと出力SQL文の内容を解析することです。 私は多くのそのような文書を持っており、それぞれの構造は似ています。しかし、それぞれのテーブルには多かれ少なかれ行があるかもしれません。 – Anoop

    答えて

    5

    Tablesコレクションを使用して、Word文書のテーブルを列挙できます。 RowsColumnsのプロパティを使用すると、特定のテーブルの行数/列数を判断できます。個々のセルには、Cellオブジェクトを介してアクセスできます。文書内の最後の行のセルの値と各テーブルの最後の列を印刷する

    例:

    $wd = New-Object -ComObject Word.Application 
    $wd.Visible = $true 
    $doc = $wd.Documents.Open($filename) 
    $doc.Tables | ForEach-Object { 
        $_.Cell($_.Rows.Count, $_.Columns.Count).Range.Text 
    } 
    
    +0

    ありがとうございます。しかし、私には1つの質問があります。テーブル関連のロジックを呼び出すために、テーブルの中にいることをどのように知っていますか? isTable()のようなものはありますか? – Anoop

    +0

    私はその質問を理解しているかわかりません。 'Tables'コレクションには、ドキュメント内のすべてのテーブルがあります。そのコレクションからオブジェクトにアクセスすると、そのオブジェクトはテーブルになります。 –

    +0

    ええと - 私は今あなたが言ったことを理解していると思います。私は、テーブルであるかどうかにかかわらず、すべてのテキストをシーケンシャルに読み込もうとしていました。テーブルであれば、テーブルロジックを呼び出したいと思っていました。しかし、私はそうする必要はありません。テーブルコレクションを使用するときれいに見えます。どうもありがとうございました。 – Anoop

    関連する問題