C# word报表模板添加多个表格的嵌套问题
要求:生成一个N行2列的大表格,里面每个格子里面放一个小表格。代码如下:
// 找到书签位置
wrdRng = WordDoc.Bookmarks.get_Item(ref markNm_target).Range;
// 首先定义一个外围表格(2行2列)
Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(wrdRng, 2, 2, ref oMissing, ref oMissing);
newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
// 设置表格每个格子宽度高度都为200
newTable.Columns[1].Width = 200f;
newTable.Columns[2].Width = 200f;
newTable.Rows[1].Height = 200f;
newTable.Rows[2].Height = 200f;
// 在第一行第一列格子插入一个表格
wrdRng = newTable.Cell(1, 1).Range;
InsertTable(wrdRng);
// 在第一行第二列格子插入一个表格
wrdRng = newTable.Cell(1, 2).Range;
InsertTable(wrdRng);
// 在第二行第一列格子插入一个表格
wrdRng = newTable.Cell(2, 1).Range;
InsertTable(wrdRng);
但是生成的word文件如图:
--------------------编程问答-------------------- --------------------编程问答-------------------- 正确的格式应该是这样的:
--------------------编程问答-------------------- 生成表格后,默认的书签会指向表格的左边第一个格子:我修改代码
// 在第一行第一列格子插入一个表格--------------------编程问答-------------------- // 在第一行第一列格子插入一个表格
// wrdRng = newTable.Cell(1, 1).Range;
// 把这句话注释掉,第一个表格生成正确,但是后面的表格生成不正确,我也试过在后面的 格子添加书签,但是还是不行,请问如何修改代码?
InsertTable(wrdRng);
// 在第一行第二列格子插入一个表格
wrdRng = newTable.Cell(1, 2).Range;
InsertTable(wrdRng);
// 在第二行第一列格子插入一个表格
wrdRng = newTable.Cell(2, 1).Range;
InsertTable(wrdRng);
wrdRng = newTable.Cell(1, 1).Range;
得到的range是一个范围,不是光标,必须是光标,插入的表格才是正确的,求解? --------------------编程问答-------------------- 我也遇到同样问题 有没有高手指教下 嵌套进去的表格 只能显示最后一行!!! --------------------编程问答-------------------- 怎麼不用excel,哎 --------------------编程问答-------------------- 楼主最后问题解决了吗? --------------------编程问答-------------------- 怎么嵌套的表格?能提供源代码学习下么,我也碰到了这样的问题,解决不了求大神帮忙啊! --------------------编程问答-------------------- 貌似插入内嵌表的时候不能有多行,可以插入后在给插入表添加行:
Range newrange = table.Cell(1, 1).Range;
Microsoft.Office.Interop.Word.Table tableinner= doc.Tables.Add(newrange,1,3,ref Unknown,ref Unknown);//添加内嵌表
tableinner.Cell(1, 1).Range.Text = "a";
tableinner.Cell(1, 2).Range.Text = "b";
tableinner.Cell(1, 3).Range.Text = "c";
tableinner.Rows.Add(ref Unknown);
tableinner.Cell(2, 1).Range.Text = "d";
tableinner.Cell(2, 2).Range.Text = "e";
tableinner.Cell(2, 3).Range.Text = "f";
补充:.NET技术 , C#