【问题标题】:C# Microsoft Interop Word put shape inside table cellC# Microsoft Interop Word 在表格单元格中放置形状
【发布时间】:2016-11-08 02:06:47
【问题描述】:

我正在尝试将 Microsoft.Office.Interop.Word.Shape 放在一个表格单元格中,就像这个简短的示例一样:

Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
Word.Document oDocument = oWord.Documents.Add();
Word.Table oTable = oDocument.Tables.Add(oDocument.Range(), 4, 1);

Word.Cell oCell1 = oTable.Cell(1,1);
Word.Shape oShape1 = oDocument.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle.GetHashCode(), 7, 7, 11, 11, oCell1.Range);

Word.Cell oCell2 = oTable.Cell(2, 1);
Word.Shape oShape2 = oDocument.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle.GetHashCode(), 7, 7, 11, 11, oCell2.Range);

Word.Cell oCell3 = oTable.Cell(3, 1);
Word.Shape oShape3 = oDocument.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle.GetHashCode(), 7, 7, 11, 11, oCell3.Range);

Word.Cell oCell4 = oTable.Cell(4, 1);
Word.Shape oShape4 = oDocument.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle.GetHashCode(), 7, 7, 11, 11, oCell4.Range);

  oWord.Visible = true;

矩形只出现在文档的左上角。 我不确定自己做错了什么,因为我将形状锚点设置为单元格范围。

2016 年 12 月 7 日:

好的,看看这个, 我现在有 5 列和 100 行,并尝试将形状放入第三列。我正在使用“符合文本”属性。

现在,在前两页上,所有形状都放在第一行/第一列。从第三页开始,它看起来不错...

我使用的是 Office 2013。

Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
Word.Document oDocument = oWord.Documents.Add();

int numRows = 100;
Word.Table oTable = oDocument.Tables.Add(oDocument.Range(), numRows, 5);
oTable.Borders.OutsideLineStyle =  Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
oTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;

for (int r = 1; r <= numRows; ++r)
{
    Word.Range anchorRange = oTable.Cell(r, 3).Range;
    Word.Shape oShape = oDocument.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle.GetHashCode(), 7, 7, 11, 11, anchorRange);
    oShape.WrapFormat.Type = Microsoft.Office.Interop.Word.WdWrapType.wdWrapInline;
}
oWord.Visible = true;

【问题讨论】:

    标签: c# ms-word


    【解决方案1】:

    如果您单击添加的矩形,并启用段落/格式符号(它是 Home > Paragraph 中的向后 P 查找按钮),您会注意到锚点确实位于表格单元格上。文本环绕的形状还需要其他设置才能在页面上具有特定位置。弄乱大小和位置对话框来感受一下。

    【讨论】:

    • 我无法确认这一点。我是否使用锚点都没有区别。我可以在表格后面(不在单元格内)看到 Word 中的锚点。形状显示在左上角。
    • 它在表格的一侧,因为 Word 在相关范围的左侧显示锚点。如果您制作一个包含更多列的表格并将形状放在第一列以外的列中,您会看到锚点位于相关单元格的左侧。
    • 您的第二个示例对我来说效果很好,但我使用的是 Office 2010。我记得几个月前在 2010 年的第一页上遇到了形状和锚定位置的问题(尽管我忘记了细节) ,也许 2013 年也会发生类似的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多