C# 通过C动态填充Microsoft Word中的现有表格#
我已经创建了一个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
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需要的大部分内容都在那篇链接文章中,而且不知道什么时候它会消失。。。