我正在尝试执行以下操作: 根据表格中单元格中的值插入箭头。 这部分,我工作得很好。 箭头的颜色应该是有条件的,并且同样适用。
但我的问题是: 如何确定放置它的正确位置。 我已经得出结论有两个问题:
垂直:跨越页面。对于1页,它可以工作,一旦我尝试第二页,它就将形状放在第一页上 水平:相对于表格中输入的文字的右侧位置。
这是我现在的垂直定位代码:
private float getVertical(Word.Range r)
{
return (float)r.Characters.Last.get_Information(
Microsoft.Office.Interop.Word.WdInformation.wdVerticalPositionRelativeToPage);
}
水平代码(基本上将同一行的每个cel的宽度添加到实际单元格宽度的三分之二)
private float getHorizontal(Word.Range r, Word.Table tab, int col)
{
float i1, i2 = 0.0f, i3;
i1 = (tab.Cell(2, col).Width / 3) * 2;
int i;
for (i = 1; i < col; i++)
{
i2 += tab.Cell(2, i).Width;
}
i3 = i1 + i2;
return i3;
}
欢迎并赞赏任何和所有建议,
问候
暗影
答案 0 :(得分:2)
最后我已经弄明白了,并且为了将来的参考和文档目的而永恒(永恒?): - )。
我之前没有做的是:为形状添加锚点范围 我在哪里找到:无处不在,不得不通过使用形状链接到锚点的MSDN文档弄明白,如果你没有指定,c#会将你的形状放在默认范围内(在我的情况下的第一页) 解决方案 :(请注意,这是代码的摘录,假设有一些关于单词互操作的知识。如果需要更多信息,请不要犹豫。)
//create word document
--some code
//insert page break here
--some code
//insert paragraph
--some code
//insert table here
--some code
//define range
Word.Range shapeAnchor = doc.Bookmarks.get_Item(ref oEndOfDoc).Range;
//insert shape
Microsoft.Office.Core.MsoAutoShapeType sh =
Microsoft.Office.Core.MsoAutoShapeType.msoShapeUpArrow;
Word.Shape shh = doc.Shapes.AddShape(sh.GetHashCode(), x, y,
width, height, shapeAnchor);
实际写出的代码可以放入一个函数中,然后它将始终有效。
问候,
暗影