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

问题描述 投票:0回答:2

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

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

请参阅下图,它与我要添加到文档中的形状相同。

c# asp.net .net ms-word openxml
2个回答
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 = "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\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 对象中。


0
投票

使用此代码 -

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System;
using System.IO;
using A = DocumentFormat.OpenXml.Drawing;
using DW = DocumentFormat.OpenXml.Drawing.Wordprocessing;
using PIC = DocumentFormat.OpenXml.Drawing.Pictures;

Console.WriteLine("Hello, World!");

InsertAPicture(documentLocation,fileLocation);

static void InsertAPicture(string document, string fileName)
{
    Console.WriteLine("Image generation started");
    using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(document, true))
    {
        if (wordprocessingDocument.MainDocumentPart is null)
        {
            throw new ArgumentNullException("MainDocumentPart is null.");
        }

        MainDocumentPart mainPart = wordprocessingDocument.MainDocumentPart;

        ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Jpeg);

        using (FileStream stream = new FileStream(fileName, FileMode.Open))
        {
            imagePart.FeedData(stream);
        }

        AddImageToBody(wordprocessingDocument, mainPart.GetIdOfPart(imagePart));
        Console.WriteLine("Image generation complete");
    }
}

static void AddImageToBody(WordprocessingDocument wordDoc, string relationshipId)
{
    // Define the reference of the image.
    var element =
         new Drawing(
             new DW.Inline(
                 new DW.Extent() { Cx = 990000L, Cy = 792000L },
                 new DW.EffectExtent()
                 {
                     LeftEdge = 0L,
                     TopEdge = 0L,
                     RightEdge = 0L,
                     BottomEdge = 0L
                 },
                 new DW.DocProperties()
                 {
                     Id = (UInt32Value)1U,
                     Name = "Picture 1"
                 },
                 new DW.NonVisualGraphicFrameDrawingProperties(
                     new A.GraphicFrameLocks() { NoChangeAspect = true }),
                 new A.Graphic(
                     new A.GraphicData(
                         new PIC.Picture(
                             new PIC.NonVisualPictureProperties(
                                 new PIC.NonVisualDrawingProperties()
                                 {
                                     Id = (UInt32Value)0U,
                                     Name = "New Bitmap Image.jpg"
                                 },
                                 new PIC.NonVisualPictureDrawingProperties()),
                             new PIC.BlipFill(
                                 new A.Blip(
                                     new A.BlipExtensionList(
                                         new A.BlipExtension()
                                         {
                                             Uri =
                                                "{28A0092B-C50C-407E-A947-70E740481C1C}"
                                         })
                                 )
                                 {
                                     Embed = relationshipId,
                                     CompressionState =
                                     A.BlipCompressionValues.Print
                                 },
                                 new A.Stretch(
                                     new A.FillRectangle())),
                             new PIC.ShapeProperties(
                                 new A.Transform2D(
                                     new A.Offset() { X = 0L, Y = 0L },
                                     new A.Extents() { Cx = 990000L, Cy = 792000L }),
                                 new A.PresetGeometry(
                                     new A.AdjustValueList()
                                 )
                                 { Preset = A.ShapeTypeValues.Rectangle }))
                     )
                     { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" })
             )
             {
                 DistanceFromTop = (UInt32Value)0U,
                 DistanceFromBottom = (UInt32Value)0U,
                 DistanceFromLeft = (UInt32Value)0U,
                 DistanceFromRight = (UInt32Value)0U,
                 EditId = "50D07946"
             });

    if (wordDoc.MainDocumentPart is null || wordDoc.MainDocumentPart.Document.Body is null)
    {
        throw new ArgumentNullException("MainDocumentPart and/or Body is null.");
    }

    // Append the reference to body, the element should be in a Run.
    wordDoc.MainDocumentPart.Document.Body.AppendChild(new Paragraph(new Run(element)));
}
© www.soinside.com 2019 - 2024. All rights reserved.