当前位置:  开发笔记 > 编程语言 > 正文

C#WordprocessingDocument-在单元格中插入图像

如何解决《C#WordprocessingDocument-在单元格中插入图像》经验,为你挑选了1个好方法。

我有一种方法可以替换文档特定文本中的标签。如何更换标签图片?



1> 小智..:

这是一段代码,用于查找表中文本为“ PersonMainPhoto”的单元格。表格单元被清除,并插入图像。希望这可以指导您正确的方向。

插入图像分为两个过程:

将图像部分添加到文档

在正文中插入对图像的引用-有关缩放,定位等的各种详细信息。

插入参考的代码来自出色的OpenXML SDK文档:https : //msdn.microsoft.com/zh-cn/library/office/bb497430.aspx

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

namespace StackOverflow
{
  class Program
  {
    static void Main(string[] args)
    {
      string file = @"c:\temp\mydoc.docx";
      string imageFile = @"c:\temp\myimage.jpg";
      string labelText = "PersonMainPhoto";

      using (var document = WordprocessingDocument.Open(file, isEditable: true))
      {
        var mainPart = document.MainDocumentPart;
        var table = mainPart.Document.Body.Descendants().First();

        var pictureCell = table.Descendants().First(c => c.InnerText == labelText);

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

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

        pictureCell.RemoveAllChildren();
        AddImageToCell(pictureCell, mainPart.GetIdOfPart(imagePart));

        mainPart.Document.Save();
      }
    }

    private static void AddImageToCell(TableCell cell, string relationshipId)
    {
      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
          });

      cell.Append(new Paragraph(new Run(element)));
    }
  }
}

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有