2011-11-15 10 views
6

これはおそらくちょっと愚かですが、本当に必要です。私は5テーブルの各テーブルに見出しがあるドキュメントを持っています。見出しは特別なスタイリングがない通常のテキストで、何もありません。私はこれらのテーブルからデータを抽出する必要があります+ヘッダ。テーブル上のテキストを取得するMS Word

app.Tables[1].Cell(2, 2).Range.Text; 

しかし、今、私は右の表の上のテキストを取得する方法を把握しようとに苦労しています: は現在、MSの相互運用機能を使用して、私はこのようなものを使用して各テーブルの各セルを反復処理することができました。私は「私は、このテキストをNEED」とsecndテーブルのために私が取得する必要が取得する必要があり、最初のテーブルのためにenter image description here

: はここにスクリーンショットだ「そしてまた、この1下さい」

だから、基本的に私は最後の必要があります各表の前に段落。これを行う方法に関する提案はありますか?

答えて

3

この行に沿って何か試してみることもできます。段落を表の最初のセルと比較し、一致するものがある場合は前の段落を表のヘッダーとして取得します。もちろん、テーブルの最初のセルは、文書内の別の場所では見られないであろうユニークな段落が含まれている場合にのみ動作:

var tIndex = 1; 
var tCount = oDoc.Tables.Count; 
var tblData = oDoc.Tables[tIndex].Cell(1, 1).Range.Text; 
var pCount = oDoc.Paragraphs.Count; 
var prevPara = ""; 
for (var i = 1; i <= pCount; i++) { 
    var para = oDoc.Paragraphs[i]; 
    var paraData = para.Range.Text; 

    if (paraData == tblData) { 
     // this paragraph is at the beginning of the table, so grab previous paragraph 
     Console.WriteLine("Header: " + prevPara); 
     tIndex++; 
     if (tIndex <= tCount) 
      tblData = oDoc.Tables[tIndex].Cell(1, 1).Range.Text; 
     else 
      break; 
    } 
    prevPara = paraData; 
} 

サンプル出力:

Header: I NEED THIS TEXT 

Header: AND THIS ONE also please 
+0

ありがとうございました!あなたのソリューションは、これを実装する方法について私にアイデアを与えました。時間を費やした後、私はそれをやるより簡単な方法を考え出しました。私はこれを答えとして掲示します。 – user194076

9

Mellamokb彼の答えでは、与えました私はヒントと段落の検索方法の良い例です。彼のソリューションを実装しているうちに、わたしは必要なものを正確に実行する関数「Previous」を見つけました。これを使用する方法は次のとおりです。

wd.Tables[1].Cell(1, 1).Range.Previous(WdUnits.wdParagraph, 2).Text; 

Previousは2つのパラメータを受け入れます。ファーストユニット:このリストから探したいユニット:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.wdunits.aspx 第2パラメータは、カウントダウンするユニットの数です。私の場合、2人は働いた。それはテーブルの直前であるはずなので、それがそうであるように見えましたが、1つでは、私は奇妙な特殊文字:が女性のインジケータのように見えます。

+0

「単語の表の上のテキストをどうやって取得するのか」というグーグルは完全に無益だと思っていましたが、私は絶望的でした。これは私を解決に導いた。ありがとう! C#とnetofficeを使用すると、テーブルのpreviousSibling()メソッドが使用されます。 – user1815201

+0

本当にありがとうございました! –

+0

うわー!本当にスマートなトリック、それは完全に動作します –

関連する問題