如何使用Word Interop将新行添加到C#中的现有word文档表?

时间:2015-06-17 02:33:02

标签: c# winforms ms-word office-interop

所以,我有这个Word文档模板,里面有一个现有的表。我在查找有关如何在现有表上插入新行的参考时遇到了一些困难。

我想知道的第一件事是,我如何识别我的word文档模板中的表是否是现有表?

其次,我将如何使用数据填充表格?

我尝试将此链接作为参考https://msdn.microsoft.com/en-us/library/vstudio/w1702h4a.aspx,但不知道如何将其嵌入到我的程序中。

我还尝试使用以下代码创建新表作为替代解决方案:

object m = System.Reflection.Missing.Value;
object oldFileName = (object)"E:\\Fake Bill.docx";
object readOnly = (object)false;
Word.Application ac = null;
ac = new Word.Application();

// Now we open the document.
Word.Document doc = ac.Documents.Open(ref oldFileName, ref m, ref readOnly,
     ref m, ref m, ref m, ref m, ref m, ref m, ref m,
     ref m, ref m, ref m, ref m, ref m, ref m);

object start = 0;
object end = 0;
Word.Range myRange = doc.Range(ref start, ref end);
Word.Table myTable = doc.Tables.Add(myRange, 2, 3);
int rowCount = 2; 

List<string> collectionOfStrings = new List<string>();
collectionOfStrings.Add("hello");
collectionOfStrings.Add("hi");


//add a row for each item in a collection.
foreach( string s in collectionOfStrings)

{
    myTable.Rows.Add(ref m);

    // do somethign to the row here. add strings etc. 
    myTable.Rows[rowCount].Cells[1].Range.Text = "Content of column 1";

    myTable.Rows[rowCount].Cells[2].Range.Text = "Content of column 2";

    myTable.Rows[rowCount].Cells[3].Range.Text = "Content of column 3";

    //etc
    rowCount++;

}

此代码工作正常。我现在唯一的问题是识别现有的表格。

1 个答案:

答案 0 :(得分:1)

这个答案很晚,但万一你从来没有想过:

您可以在Word中设置表格的替代文字(右键单击&gt;表格属性&gt;替代文字),然后使用它来挑出所需的表格。

    foreach (Table table in myDocument.Tables)
    {
        if (table.Title == "table_alt_text")
        {
            // However you want to manipulate your table
        }
    }