2017-12-04 8 views
2

データセット表をWordにエクスポートする必要があります。 Interop Wordを使用したソリューションを試しました。ここで私は問題に直面しています相互作用語の動的表作成

私は、一連のスペースを持つ単語の文書にテーブルを配置する必要があります私の問題は、私はデータセット上の各テーブルを新しいテーブルを作成することはできません。ここで

private void Exporttoword_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      DataSet Ds = objMB.ExeQueryStrRetDsBL("SP_PreviewSeries" + cbMatches.SelectedValue, 1); 
      object oMissing = System.Reflection.Missing.Value; 
      object oEndOfDoc = "\\endofdoc"; 
      Microsoft.Office.Interop.Word._Application objWord; 
      Microsoft.Office.Interop.Word._Document objDoc; 
      objWord = new Microsoft.Office.Interop.Word.Application(); 
      objWord.Visible = true; 
      objDoc = objWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing); 

      for (var w = 0; w < Ds.Tables.Count; w++) 
      { 
       Microsoft.Office.Interop.Word.Table objTable; 

       Microsoft.Office.Interop.Word.Range wrdRng = objDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; 
       objTable = objDoc.Tables.Add(wrdRng, Convert.ToInt32(Ds.Tables[w].Rows.Count), Convert.ToInt32(Ds.Tables[w].Columns.Count), ref oMissing, ref oMissing); 
       objTable.Range.ParagraphFormat.SpaceAfter = 3; 
       for (var i = 0; i < Ds.Tables[w].Rows.Count; i++) 
        for (var j = 0; j < Ds.Tables[w].Columns.Count; j++) 
        { 
         objTable.Cell(i + 1, j + 1).Range.Text = Ds.Tables[w].Rows[i][j].ToString(); 
         objTable.Cell(i + 1, j + 1).Range.Borders.Enable = 1; 
        } 
       objTable.Rows[1].Range.Font.Bold = 1; 
       objTable.Rows[1].Range.Font.Italic = 1; 
      } 
      this.Close(); 
      string fp = @"D:\Practice\test.docx"; 
      objDoc.SaveAs2(fp); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 
+0

ループからブックマークを使用して初期位置を取得し、ループ内にテーブルを挿入します。ところで、あなたの質問を修正していただきありがとうございます(このコードで得られた出力は何ですか?予想される動作とどのように違うのですか?例外がスローされますか、それとも1つのテーブルで動作しますか?) –

+0

エラーは発生しません。すべてのテーブルは単一のテーブルにバインドされています。それが問題です。私がこれを解決するのを助けてください.. – Ethiraj

+0

各テーブルの後ろに段落を挿入してください(Wordアプリケーションでコードを実行してみてください。別のテーブルの後にテーブルを挿入する問題が見つかります)。 –

答えて

0

、私のコードであるあなたは、あなたのforループ内のWordのような段落を宣言する必要があります。

Microsoft.Office.Interop.Word.Paragraph paragraph; 

とループの

paragraph = objDoc.Paragraphs.Add(); 

の終わりに、このソリューションは、私のために正常に動作します。これを試して。

関連する問題