如何使用openxml C#在word文档中添加形状?

Posted

技术标签:

【中文标题】如何使用openxml C#在word文档中添加形状?【英文标题】:How to add a shape in word document using openxml C#? 【发布时间】:2017-08-11 10:53:54 【问题描述】:

我想使用openxml在word文档中添加一个水平形状。

我尝试使用 OpenXML Productivity 工具粘贴代码,但在打开生成的文件时出现错误(未声明“http://schemas.microsoft.com/office/word/2010/wordml:anchorId”属性)

请看下图,我想添加到我的文档中的相同形状。

【问题讨论】:

嘿,我找到了解决方案。谢谢 @Imad 请查看我的解决方案。 能否请您分享您的解决方案... 【参考方案1】:

发布我在 OpenXML 中发现 1 小时后得到的解决方案。

  //namespace used
  using DocumentFormat.OpenXml;
  using W = DocumentFormat.OpenXml.Wordprocessing;
  using Wp = DocumentFormat.OpenXml.Drawing.Wordprocessing;
  using A = DocumentFormat.OpenXml.Drawing;
  using Wps = DocumentFormat.OpenXml.Office2010.Word.DrawingShape;
  using V = DocumentFormat.OpenXml.Vml;
  using Wvml = DocumentFormat.OpenXml.Vml.Wordprocessing;
  using A14 = DocumentFormat.OpenXml.Office2010.Drawing;
  using Wp14 = DocumentFormat.OpenXml.Office2010.Word.Drawing;
  using Pic = DocumentFormat.OpenXml.Drawing.Pictures;
  using Ovml = DocumentFormat.OpenXml.Vml.Office
  //namespace used    

    public Run AddShape()
    
        Run run1 = new Run();

        RunProperties runProperties1 = new RunProperties();
        NoProof noProof1 = new NoProof();

        runProperties1.Append(noProof1);

        AlternateContent alternateContent1 = new AlternateContent();

        AlternateContentChoice alternateContentChoice1 = new AlternateContentChoice()  Requires = "wps" ;

        Drawing drawing1 = new Drawing();

        Wp.Anchor anchor1 = new Wp.Anchor()  DistanceFromTop = (UInt32Value)0U, DistanceFromBottom = (UInt32Value)0U, DistanceFromLeft = (UInt32Value)0U, DistanceFromRight = (UInt32Value)0U, SimplePos = false, RelativeHeight = (UInt32Value)251658240U, BehindDoc = true, Locked = false, LayoutInCell = false, AllowOverlap = true ;
        anchor1.AnchorId = GetRandomHexNumber(8);
        Wp.SimplePosition simplePosition1 = new Wp.SimplePosition()  X = 0L, Y = 0L ;

        Wp.HorizontalPosition horizontalPosition1 = new Wp.HorizontalPosition()  RelativeFrom = Wp.HorizontalRelativePositionValues.Page ;
        Wp.PositionOffset positionOffset1 = new Wp.PositionOffset();
        positionOffset1.Text = "0";

        horizontalPosition1.Append(positionOffset1);

        Wp.VerticalPosition verticalPosition1 = new Wp.VerticalPosition()  RelativeFrom = Wp.VerticalRelativePositionValues.Page ;
        Wp.PositionOffset positionOffset2 = new Wp.PositionOffset();
        positionOffset2.Text = ShapeVPosition;

        verticalPosition1.Append(positionOffset2);
        Wp.Extent extent1 = new Wp.Extent()  Cx = 6858000L, Cy = 76200L ;
        Wp.EffectExtent effectExtent1 = new Wp.EffectExtent()  LeftEdge = 0L, TopEdge = 0L, RightEdge = 0L, BottomEdge = 0L ;
        Wp.WrapNone wrapNone1 = new Wp.WrapNone();
        Wp.DocProperties docProperties1 = new Wp.DocProperties()  Id = 1U, Name = "Shape 1" ; // Id and name should be unique for every shape

        Wp.NonVisualGraphicFrameDrawingProperties nonVisualGraphicFrameDrawingProperties1 = new Wp.NonVisualGraphicFrameDrawingProperties();

        A.GraphicFrameLocks graphicFrameLocks1 = new A.GraphicFrameLocks();
        graphicFrameLocks1.AddNamespaceDeclaration("a", "http://schemas.openxmlformats.org/drawingml/2006/main");

        nonVisualGraphicFrameDrawingProperties1.Append(graphicFrameLocks1);

        A.Graphic graphic1 = new A.Graphic();
        graphic1.AddNamespaceDeclaration("a", "http://schemas.openxmlformats.org/drawingml/2006/main");

        A.GraphicData graphicData1 = new A.GraphicData()  Uri = "http://schemas.microsoft.com/office/word/2010/wordprocessingShape" ;

        Wps.WordprocessingShape wordprocessingShape1 = new Wps.WordprocessingShape();

        Wps.NonVisualDrawingShapeProperties nonVisualDrawingShapeProperties1 = new Wps.NonVisualDrawingShapeProperties();
        A.ShapeLocks shapeLocks1 = new A.ShapeLocks();

        nonVisualDrawingShapeProperties1.Append(shapeLocks1);

        Wps.ShapeProperties shapeProperties1 = new Wps.ShapeProperties()  BlackWhiteMode = A.BlackWhiteModeValues.Auto ;

        A.Transform2D transform2D1 = new A.Transform2D();
        A.Offset offset1 = new A.Offset()  X = 0L, Y = 0L ;
        A.Extents extents1 = new A.Extents()  Cx = 6858000L, Cy = 76200L ;

        transform2D1.Append(offset1);
        transform2D1.Append(extents1);

        A.CustomGeometry customGeometry1 = new A.CustomGeometry();
        A.AdjustValueList adjustValueList1 = new A.AdjustValueList();

        A.ShapeGuideList shapeGuideList1 = new A.ShapeGuideList();
        A.ShapeGuide shapeGuide1 = new A.ShapeGuide()  Name = "T0", Formula = "*/ 0 w 6858000" ;
        A.ShapeGuide shapeGuide2 = new A.ShapeGuide()  Name = "T1", Formula = "*/ 0 h 76200" ;
        A.ShapeGuide shapeGuide3 = new A.ShapeGuide()  Name = "T2", Formula = "*/ 0 w 6858000" ;
        A.ShapeGuide shapeGuide4 = new A.ShapeGuide()  Name = "T3", Formula = "*/ 76200 h 76200" ;
        A.ShapeGuide shapeGuide5 = new A.ShapeGuide()  Name = "T4", Formula = "*/ 6858000 w 6858000" ;
        A.ShapeGuide shapeGuide6 = new A.ShapeGuide()  Name = "T5", Formula = "*/ 76200 h 76200" ;
        A.ShapeGuide shapeGuide7 = new A.ShapeGuide()  Name = "T6", Formula = "*/ 6858000 w 6858000" ;
        A.ShapeGuide shapeGuide8 = new A.ShapeGuide()  Name = "T7", Formula = "*/ 0 h 76200" ;
        A.ShapeGuide shapeGuide9 = new A.ShapeGuide()  Name = "T8", Formula = "*/ 0 w 6858000" ;
        A.ShapeGuide shapeGuide10 = new A.ShapeGuide()  Name = "T9", Formula = "*/ 0 h 76200" ;
        A.ShapeGuide shapeGuide11 = new A.ShapeGuide()  Name = "T10", Formula = "*/ 0 60000 65536" ;
        A.ShapeGuide shapeGuide12 = new A.ShapeGuide()  Name = "T11", Formula = "*/ 0 60000 65536" ;
        A.ShapeGuide shapeGuide13 = new A.ShapeGuide()  Name = "T12", Formula = "*/ 0 60000 65536" ;
        A.ShapeGuide shapeGuide14 = new A.ShapeGuide()  Name = "T13", Formula = "*/ 0 60000 65536" ;
        A.ShapeGuide shapeGuide15 = new A.ShapeGuide()  Name = "T14", Formula = "*/ 0 60000 65536" ;
        A.ShapeGuide shapeGuide16 = new A.ShapeGuide()  Name = "T15", Formula = "*/ 0 w 6858000" ;
        A.ShapeGuide shapeGuide17 = new A.ShapeGuide()  Name = "T16", Formula = "*/ 0 h 76200" ;
        A.ShapeGuide shapeGuide18 = new A.ShapeGuide()  Name = "T17", Formula = "*/ 6858000 w 6858000" ;
        A.ShapeGuide shapeGuide19 = new A.ShapeGuide()  Name = "T18", Formula = "*/ 76200 h 76200" ;

        shapeGuideList1.Append(shapeGuide1);
        shapeGuideList1.Append(shapeGuide2);
        shapeGuideList1.Append(shapeGuide3);
        shapeGuideList1.Append(shapeGuide4);
        shapeGuideList1.Append(shapeGuide5);
        shapeGuideList1.Append(shapeGuide6);
        shapeGuideList1.Append(shapeGuide7);
        shapeGuideList1.Append(shapeGuide8);
        shapeGuideList1.Append(shapeGuide9);
        shapeGuideList1.Append(shapeGuide10);
        shapeGuideList1.Append(shapeGuide11);
        shapeGuideList1.Append(shapeGuide12);
        shapeGuideList1.Append(shapeGuide13);
        shapeGuideList1.Append(shapeGuide14);
        shapeGuideList1.Append(shapeGuide15);
        shapeGuideList1.Append(shapeGuide16);
        shapeGuideList1.Append(shapeGuide17);
        shapeGuideList1.Append(shapeGuide18);
        shapeGuideList1.Append(shapeGuide19);
        A.AdjustHandleList adjustHandleList1 = new A.AdjustHandleList();

        A.ConnectionSiteList connectionSiteList1 = new A.ConnectionSiteList();

        A.ConnectionSite connectionSite1 = new A.ConnectionSite()  Angle = "T10" ;
        A.Position position1 = new A.Position()  X = "T0", Y = "T1" ;

        connectionSite1.Append(position1);

        A.ConnectionSite connectionSite2 = new A.ConnectionSite()  Angle = "T11" ;
        A.Position position2 = new A.Position()  X = "T2", Y = "T3" ;

        connectionSite2.Append(position2);

        A.ConnectionSite connectionSite3 = new A.ConnectionSite()  Angle = "T12" ;
        A.Position position3 = new A.Position()  X = "T4", Y = "T5" ;

        connectionSite3.Append(position3);

        A.ConnectionSite connectionSite4 = new A.ConnectionSite()  Angle = "T13" ;
        A.Position position4 = new A.Position()  X = "T6", Y = "T7" ;

        connectionSite4.Append(position4);

        A.ConnectionSite connectionSite5 = new A.ConnectionSite()  Angle = "T14" ;
        A.Position position5 = new A.Position()  X = "T8", Y = "T9" ;

        connectionSite5.Append(position5);

        connectionSiteList1.Append(connectionSite1);
        connectionSiteList1.Append(connectionSite2);
        connectionSiteList1.Append(connectionSite3);
        connectionSiteList1.Append(connectionSite4);
        connectionSiteList1.Append(connectionSite5);
        A.Rectangle rectangle1 = new A.Rectangle()  Left = "T15", Top = "T16", Right = "T17", Bottom = "T18" ;

        A.PathList pathList1 = new A.PathList();

        A.Path path1 = new A.Path()  Width = 6858000L, Height = 76200L ;

        A.MoveTo moveTo1 = new A.MoveTo();
        A.Point point1 = new A.Point()  X = "0", Y = "0" ;

        moveTo1.Append(point1);

        A.LineTo lineTo1 = new A.LineTo();
        A.Point point2 = new A.Point()  X = "0", Y = "76200" ;

        lineTo1.Append(point2);

        A.LineTo lineTo2 = new A.LineTo();
        A.Point point3 = new A.Point()  X = "6858000", Y = "76200" ;

        lineTo2.Append(point3);

        A.LineTo lineTo3 = new A.LineTo();
        A.Point point4 = new A.Point()  X = "6858000", Y = "0" ;

        lineTo3.Append(point4);

        A.LineTo lineTo4 = new A.LineTo();
        A.Point point5 = new A.Point()  X = "0", Y = "0" ;

        lineTo4.Append(point5);

        path1.Append(moveTo1);
        path1.Append(lineTo1);
        path1.Append(lineTo2);
        path1.Append(lineTo3);
        path1.Append(lineTo4);

        pathList1.Append(path1);

        customGeometry1.Append(adjustValueList1);
        customGeometry1.Append(shapeGuideList1);
        customGeometry1.Append(adjustHandleList1);
        customGeometry1.Append(connectionSiteList1);
        customGeometry1.Append(rectangle1);
        customGeometry1.Append(pathList1);

        A.SolidFill solidFill1 = new A.SolidFill();
        A.RgbColorModelHex rgbColorModelHex1 = new A.RgbColorModelHex()  Val = "00AFEF" ;

        solidFill1.Append(rgbColorModelHex1);

        A.Outline outline1 = new A.Outline();
        A.NoFill noFill1 = new A.NoFill();

        outline1.Append(noFill1);

        A.ShapePropertiesExtensionList shapePropertiesExtensionList1 = new A.ShapePropertiesExtensionList();

        A.ShapePropertiesExtension shapePropertiesExtension1 = new A.ShapePropertiesExtension()  Uri = "91240B29-F687-4F45-9708-019B960494DF" ;

        A14.HiddenLineProperties hiddenLineProperties1 = new A14.HiddenLineProperties()  Width = 9525 ;
        hiddenLineProperties1.AddNamespaceDeclaration("a14", "http://schemas.microsoft.com/office/drawing/2010/main");

        A.SolidFill solidFill2 = new A.SolidFill();
        A.RgbColorModelHex rgbColorModelHex2 = new A.RgbColorModelHex()  Val = "000000" ;

        solidFill2.Append(rgbColorModelHex2);
        A.Round round1 = new A.Round();
        A.HeadEnd headEnd1 = new A.HeadEnd();
        A.TailEnd tailEnd1 = new A.TailEnd();

        hiddenLineProperties1.Append(solidFill2);
        hiddenLineProperties1.Append(round1);
        hiddenLineProperties1.Append(headEnd1);
        hiddenLineProperties1.Append(tailEnd1);

        shapePropertiesExtension1.Append(hiddenLineProperties1);

        shapePropertiesExtensionList1.Append(shapePropertiesExtension1);

        shapeProperties1.Append(transform2D1);
        shapeProperties1.Append(customGeometry1);
        shapeProperties1.Append(solidFill1);
        shapeProperties1.Append(outline1);
        shapeProperties1.Append(shapePropertiesExtensionList1);

        Wps.TextBodyProperties textBodyProperties1 = new Wps.TextBodyProperties()  Rotation = 0, Vertical = A.TextVerticalValues.Horizontal, Wrap = A.TextWrappingValues.Square, LeftInset = 91440, TopInset = 45720, RightInset = 91440, BottomInset = 45720, Anchor = A.TextAnchoringTypeValues.Top, AnchorCenter = false, UpRight = true ;
        A.NoAutoFit noAutoFit1 = new A.NoAutoFit();

        textBodyProperties1.Append(noAutoFit1);

        wordprocessingShape1.Append(nonVisualDrawingShapeProperties1);
        wordprocessingShape1.Append(shapeProperties1);
        wordprocessingShape1.Append(textBodyProperties1);

        graphicData1.Append(wordprocessingShape1);

        graphic1.Append(graphicData1);

        Wp14.RelativeWidth relativeWidth1 = new Wp14.RelativeWidth()  ObjectId = Wp14.SizeRelativeHorizontallyValues.Page ;
        Wp14.PercentageWidth percentageWidth1 = new Wp14.PercentageWidth();
        percentageWidth1.Text = "0";

        relativeWidth1.Append(percentageWidth1);

        Wp14.RelativeHeight relativeHeight1 = new Wp14.RelativeHeight()  RelativeFrom = Wp14.SizeRelativeVerticallyValues.Page ;
        Wp14.PercentageHeight percentageHeight1 = new Wp14.PercentageHeight();
        percentageHeight1.Text = "0";

        relativeHeight1.Append(percentageHeight1);

        anchor1.Append(simplePosition1);
        anchor1.Append(horizontalPosition1);
        anchor1.Append(verticalPosition1);
        anchor1.Append(extent1);
        anchor1.Append(effectExtent1);
        anchor1.Append(wrapNone1);
        anchor1.Append(docProperties1);
        anchor1.Append(nonVisualGraphicFrameDrawingProperties1);
        anchor1.Append(graphic1);
        anchor1.Append(relativeWidth1);
        anchor1.Append(relativeHeight1);

        drawing1.Append(anchor1);

        alternateContentChoice1.Append(drawing1);

        AlternateContentFallback alternateContentFallback1 = new AlternateContentFallback();

        Picture picture1 = new Picture();
        //Use Id same as what you used in DocProperties 
        V.Shape shape1 = new V.Shape()  Id = "Shape 1", Style = "position:absolute;margin-left:0;margin-top:63pt;width:540pt;height:6pt;z-index:-251658240;visibility:visible;mso-wrap-style:square;mso-width-percent:0;mso-height-percent:0;mso-wrap-distance-left:0;mso-wrap-distance-top:0;mso-wrap-distance-right:0;mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;mso-position-horizontal-relative:page;mso-position-vertical:absolute;mso-position-vertical-relative:page;mso-width-percent:0;mso-height-percent:0;mso-width-relative:page;mso-height-relative:page;v-text-anchor:top", CoordinateSize = "6858000,76200", OptionalString = "_x0000_s1026", AllowInCell = false, FillColor = "#00afef", Stroked = false, EdgePath = "m,l,76200r6858000,l6858000,,,e", EncodedPackage = "UEsDBBQABgAIAAAAIQC2gziS/gAAAOEBAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbJSRQU7DMBBF\n90jcwfIWJU67QAgl6YK0S0CoHGBkTxKLZGx5TGhvj5O2G0SRWNoz/78nu9wcxkFMGNg6quQqL6RA\n0s5Y6ir5vt9lD1JwBDIwOMJKHpHlpr69KfdHjyxSmriSfYz+USnWPY7AufNIadK6MEJMx9ApD/oD\nOlTrorhX2lFEilmcO2RdNtjC5xDF9pCuTyYBB5bi6bQ4syoJ3g9WQ0ymaiLzg5KdCXlKLjvcW893\nSUOqXwnz5DrgnHtJTxOsQfEKIT7DmDSUCaxw7Rqn8787ZsmRM9e2VmPeBN4uqYvTtW7jvijg9N/y\nJsXecLq0q+WD6m8AAAD//wMAUEsDBBQABgAIAAAAIQA4/SH/1gAAAJQBAAALAAAAX3JlbHMvLnJl\nbHOkkMFqwzAMhu+DvYPRfXGawxijTi+j0GvpHsDYimMaW0Yy2fr2M4PBMnrbUb/Q94l/f/hMi1qR\nJVI2sOt6UJgd+ZiDgffL8ekFlFSbvV0oo4EbChzGx4f9GRdb25HMsYhqlCwG5lrLq9biZkxWOiqY\n22YiTra2kYMu1l1tQD30/bPm3wwYN0x18gb45AdQl1tp5j/sFB2T0FQ7R0nTNEV3j6o9feQzro1i\nOWA14Fm+Q8a1a8+Bvu/d/dMb2JY5uiPbhG/ktn4cqGU/er3pcvwCAAD//wMAUEsDBBQABgAIAAAA\nIQC6yjCfpAMAACgKAAAOAAAAZHJzL2Uyb0RvYy54bWysVlFvmzAQfp+0/2DxOCkFUiAhajqt7TJN\n6rZKYz/AARPQwGa2E9JN+++7M5Cadsm6aS9g44/z3ff57nzxel9XZMekKgVfOv6Z5xDGU5GVfLN0\nviSrydwhSlOe0UpwtnTumXJeX758cdE2CzYVhagyJgkY4WrRNkun0LpZuK5KC1ZTdSYaxmExF7Km\nGqZy42aStmC9rtyp50VuK2TWSJEypeDrTbfoXBr7ec5S/SnPFdOkWjrgmzZPaZ5rfLqXF3SxkbQp\nyrR3g/6DFzUtOWx6MHVDNSVbWT4xVZepFErk+iwVtSvyvEyZiQGi8b1H0XwuaMNMLECOag40qf9n\nNv24u5OkzJbO1CGc1iDRSjKGhC+I2Z/4SFLbqAVgPzd3EsNUza1IvypYcEcrOFGAIev2g8jAGN1q\nYYjZ57LGPyFksjf83x/4Z3tNUvgYzcO554FMKazNItAXt3bpYvg53Sr9jgljiO5ule7ky2BkyM/6\nEBKwkdcVKPnKJR5pyWC5xw8wfwQryGFPEPJgC4h5jq1zC2bskCP2AgvY+3Xcw9ACn7QaWcA/Wp1Z\nYO+Yn5C5z4k7HsGOxOyPBYlAZY9EYXge9Rl4YNsfa3IKORbmFNLWBvY9sbstzmmkrcypI2YLc5Rr\n31bkj/L5tjRPTgXky2bICFoMSZLueZ8lMCIUy3MCqmDaNEJhSmLSQN4lJt/BCOBw1YL7IzjQj/Dz\nPkefwqcjODCL8PAo/HwEB9oQPjsKD0ZwYAThsQ3vYuijltAKsAkkPggHbSDxYQdoBAlSD60gAVJN\ndWioRtIMMTAkrVWXiqEs4WotdiwRBqcflTTY+WG14k9Rh0IDyGF9eDfG2lCxMKy/Qw9Fc7A3vDu7\nnchjDDiBUZtSewgf2bPKrRJVma3KqsKAldysrytJdhTbqvdm9XbVEz+CVeYAcYG/AbcmVvwd6n3P\nMFZ+0yZ/xP408K6m8WQVzWeTYBWEk3jmzSeeH1/FkRfEwc3qJ0ruB4uizDLGb0vOhpbtB89rif3l\noWu2pmmjvnE4Dc1pGnn/KEgsGr8LUootz8zJKRjN3vZjTcuqG7tjjw0NEPbwNkSYJop9s2u0a5Hd\nQw+VAs4p6AXXKxgUQn53SAtXlaWjvm2pZA6p3nO4C8R+EABMm0kQzqYwkfbK2l6hPAVTS0c7UAVw\neK1hBr9sG1luCtipS3Mu3kDvzkvssca/zqt+AtcRE0F/dcL7jj03qIcL3uUvAAAA//8DAFBLAwQU\nAAYACAAAACEAu18l7d0AAAAJAQAADwAAAGRycy9kb3ducmV2LnhtbEyPzU7DMBCE70i8g7VI3KhN\nkaoQ4lSlEkKIip/SB3DjbRI1XhvbbcPbsz3BbXZnNftNNR/dII4YU+9Jw+1EgUBqvO2p1bD5erop\nQKRsyJrBE2r4wQTz+vKiMqX1J/rE4zq3gkMolUZDl3MopUxNh86kiQ9I7O18dCbzGFtpozlxuBvk\nVKmZdKYn/tCZgMsOm/364DR8rz7sZnx/Xvn78Lh8Ca+yjW87ra+vxsUDiIxj/juGMz6jQ81MW38g\nm8SggYtk3k5nLM62KhSrLau7QoGsK/m/Qf0LAAD//wMAUEsBAi0AFAAGAAgAAAAhALaDOJL+AAAA\n4QEAABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECLQAUAAYACAAAACEA\nOP0h/9YAAACUAQAACwAAAAAAAAAAAAAAAAAvAQAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEA\nusown6QDAAAoCgAADgAAAAAAAAAAAAAAAAAuAgAAZHJzL2Uyb0RvYy54bWxQSwECLQAUAAYACAAA\nACEAu18l7d0AAAAJAQAADwAAAAAAAAAAAAAAAAD+BQAAZHJzL2Rvd25yZXYueG1sUEsFBgAAAAAE\nAAQA8wAAAAgHAAAAAA==\n" ;

        shape1.AddNamespaceDeclaration("w14", "http://schemas.microsoft.com/office/word/2010/wordml");
        shape1.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office");
        shape1.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml");
        shape1.SetAttribute(new OpenXmlAttribute("w14", "anchorId", "http://schemas.microsoft.com/office/word/2010/wordml", anchor1.AnchorId));//Set anchorId attribute value same as anchorID
        V.Path path2 = new V.Path()  TextboxRectangle = "0,0,6858000,76200", ShowArrowhead = true, ConnectionPointType = Ovml.ConnectValues.Custom, ConnectionPoints = "0,0;0,76200;6858000,76200;6858000,0;0,0", ConnectAngles = "0,0,0,0,0" ;
        Wvml.TextWrap textWrap1 = new Wvml.TextWrap()  AnchorX = Wvml.HorizontalAnchorValues.Page, AnchorY = Wvml.VerticalAnchorValues.Page ;

        shape1.Append(path2);
        shape1.Append(textWrap1);

        picture1.Append(shape1);

        alternateContentFallback1.Append(picture1);

        alternateContent1.Append(alternateContentChoice1);
        alternateContent1.Append(alternateContentFallback1);

        run1.Append(runProperties1);
        run1.Append(alternateContent1);
        return run1;
       
       public string GetRandomHexNumber(int digits)
       
            byte[] buffer = new byte[digits / 2];
            random.NextBytes(buffer);
            string result = String.Concat(buffer.Select(x => x.ToString("X2")).ToArray());
            if (digits % 2 == 0)
                return result;
            return result + random.Next(16).ToString("X");
       

将此 Run 对象添加到 OpenXML 的 Paragraph 对象中。

【讨论】:

我很想测试代码以查看它产生了什么,但您的 usings 不完整,并且代码缺少一些命名空间和函数(ShapeVPosition、A14、Wp14、图片、GetRandomHexNumber)。此外,您原始问题中的链接也无法访问。我用 LINQPad 测试了一下。 @CodeArtist ,我在我的解决方案中添加了缺少的函数和命名空间,ShapeVPosition 只是我在父函数中需要的形状的位置,这就是我用作输出字符串的原因。谢谢 @CodeArtist 如果您觉得我的问题很好,请回答我的问题。谢谢, 嗨@WSk,您知道如何指定ConnectionSites 的数量吗?添加 ConnectionSite 时是否有要遵循的规则,因为我并没有真正理解它.. 嗨@DCodes,你有没有检查过我使用ConnectionSites及其所有层次结构的答案。 (ConnectionSite > ConnectionSiteList > CustomGeometry > ShapeProperties)

以上是关于如何使用openxml C#在word文档中添加形状?的主要内容,如果未能解决你的问题,请参考以下文章

C# dotnet 使用 OpenXml 关闭时不自动保存文档方法

OpenXML - 将书签应​​用于 Word 文档中的段落

在Word2007中,如何通过Range.InsertXML方法将一个OpenXML插入到空白文档中?

在 OpenXml 复选框 word2013 中设置值

在使用openXML生成word文档时,试图合并表格单元格。

使用 openxml 将标题添加到 docx