C# 通过C动态填充Microsoft Word中的现有表格#

C# 通过C动态填充Microsoft Word中的现有表格#,c#,ms-word,office-interop,word-automation,word-table,C#,Ms Word,Office Interop,Word Automation,Word Table,我已经创建了一个Word模板,其中包含一个我希望动态填充的表。 行数始终是动态的,并且总是不同的 如何填充和扩展现有表?我已经开始实现代码。 我可以创建新表并填充它们,但不能填充现有表 object oMissing = Missing.Value; Word._Application word = new Word.Application(); word.Visible = true; // Template object oTemplate = "C:\\Temp\\Template.d

我已经创建了一个Word模板,其中包含一个我希望动态填充的表。 行数始终是动态的,并且总是不同的

如何填充和扩展现有表?我已经开始实现代码。 我可以创建新表并填充它们,但不能填充现有表

object oMissing = Missing.Value;

Word._Application word = new Word.Application();
word.Visible = true;

// Template
object oTemplate = "C:\\Temp\\Template.dotx";
Word._Document document = word.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);

// Insert table and fill with data
Word.Table oTable;

int columnCount = 4;
int rowCount = someVariableCount;

// Table Bookmark
object oBookMark = "Table";

Word.Range wrdRng = document.Bookmarks.get_Item(oBookMark).Range;
oTable = document.Tables.Add(wrdRng, someVariableCount, columnCount, ref oMissing, true);

在Word中创建和扩展表的最有效方法是以分隔文本格式“转储”内容,然后将其转换为表。做任何其他事情——比如创建一个表,然后逐个单元格地写入或逐行追加——都相对较慢。桌子越长,速度越慢!这是由于Word在每次更改时动态地布局页面

如果要从文档中已存在的标题行开始,或需要扩展现有表,请在现有表的正下方插入带分隔符的内容并转换为表。在测试中,表列并不总是使用此方法精确对齐。作为一种解决方法,可以将该表插入其他位置,然后移动到现有表,在该表中它应该调整正确的列宽

带有分号字段分隔符和字符(13)记录分隔符的示例数据。请注意,任何字符都可以用作字段分隔符,但需要ANSI 13作为记录分隔符:

试验;一,;3.结束

新线;二,;4.结束

在名为
Tbl
的书签处插入并创建新表。假设
doc
Word。文档
缺少
为已定义和实例化的对象:

        string tableData = "Test;One;3;End\nNew line;Two;4;End";
        string bkmName = "TableTarget";
        if (doc.Bookmarks.Exists(bkmName))
        {
            Word.Range rngTable = doc.Bookmarks[bkmName].Range;
            rngTable.Text = tableData;
            Word.Table tbl = rngTable.ConvertToTable(";", missing, missing, missing, missing,
                missing, missing, missing, missing, missing, missing, missing, missing, missing,
                missing, Word.WdDefaultTableBehavior.wdWord8TableBehavior);
        }
附加到现有表(文档中的第一个表):


在Word中创建和扩展表的最有效方法是以分隔文本格式“转储”内容,然后将其转换为表。做任何其他事情——比如创建一个表,然后逐个单元格地写入或逐行追加——都相对较慢。桌子越长,速度越慢!这是由于Word在每次更改时动态地布局页面

如果要从文档中已存在的标题行开始,或需要扩展现有表,请在现有表的正下方插入带分隔符的内容并转换为表。在测试中,表列并不总是使用此方法精确对齐。作为一种解决方法,可以将该表插入其他位置,然后移动到现有表,在该表中它应该调整正确的列宽

带有分号字段分隔符和字符(13)记录分隔符的示例数据。请注意,任何字符都可以用作字段分隔符,但需要ANSI 13作为记录分隔符:

试验;一,;3.结束

新线;二,;4.结束

在名为
Tbl
的书签处插入并创建新表。假设
doc
Word。文档
缺少
为已定义和实例化的对象:

        string tableData = "Test;One;3;End\nNew line;Two;4;End";
        string bkmName = "TableTarget";
        if (doc.Bookmarks.Exists(bkmName))
        {
            Word.Range rngTable = doc.Bookmarks[bkmName].Range;
            rngTable.Text = tableData;
            Word.Table tbl = rngTable.ConvertToTable(";", missing, missing, missing, missing,
                missing, missing, missing, missing, missing, missing, missing, missing, missing,
                missing, Word.WdDefaultTableBehavior.wdWord8TableBehavior);
        }
附加到现有表(文档中的第一个表):


@PeterWolf Yes的可能副本是,除了当我写那个答案时,我对堆栈溢出还不熟悉,不理解在答案中包含所有必要信息的概念。这里的OP需要的大部分内容都在那篇链接文章中——不知道什么时候它会消失……可能是@PeterWolf的重复,是的,除非当我写这个答案时,我对堆栈溢出还不熟悉,不理解在答案中包含所有必要信息的概念。这里的OP需要的大部分内容都在那篇链接文章中,而且不知道什么时候它会消失。。。