国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#采用OpenXml給word里面插入圖片

2020-01-24 02:23:39
字體:
來源:轉載
供稿:網友

本文實例講述了C#采用OpenXml給word里面插入圖片的方法,分享給大家供大家參考。具體分析如下:

首先需要指出的是在MSDN官網有完整的OpenXML教程,雖然是全英文的不過還是很有幫助的。

注,原來摘抄代碼里面沒有模板,在copy過來發現插入word中的圖片大小不一樣,我們如何查找設置圖片大小帶代碼的那一塊,建議自己用在word里面插入一張圖片,通過OpenXml Tools 反編譯出C#代碼,然后改變圖片的大小,再次反編譯。

使用byeond compare 【http://www.scootersoftware.com/ 下載地址】比較C#代碼,就會發現是因為new DW.Extent() { Cx = 990000L, Cy = 792000L}  是因為這段設置造成的。以后其實很多地方都可以借助OpenXml Tools反編譯來進行對比。查看設置樣式的屬性位置。

MSDN openxml學習鏈接:  http://msdn.microsoft.com/en-us/library/office/bb491088(v=office.15).aspx。感興趣的朋友可以查看一下。

示例代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using DocumentFormat.OpenXml;using DocumentFormat.OpenXml.Packaging;using DocumentFormat.OpenXml.Wordprocessing;using System.IO;using DW = DocumentFormat.OpenXml.Drawing.Wordprocessing;using PIC = DocumentFormat.OpenXml.Drawing.Pictures;using A = DocumentFormat.OpenXml.Drawing;namespace AddPictureIntoWord{  public class Program  {    public static void Main(string[] args)    {      string picPath = "u=639047729,3872612606&fm=11&gp=0.bmp";      string filePath = "Test.docx";      AddPictureIntoWord(filePath, picPath);    }    public static void AddPictureIntoWord(string filePath, string picturePath)    {      using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, true))      {        string picType = picturePath.Split('.').Last();        ImagePartType imagePartType;        ImagePart imagePart = null;        // 通過后綴名判斷圖片類型, true 表示忽視大小寫        if (Enum.TryParse<ImagePartType>(picType, true, out imagePartType))        {          imagePart = doc.MainDocumentPart.AddImagePart(imagePartType);        }        imagePart.FeedData(File.Open(picturePath, FileMode.Open)); // 讀取圖片二進制流        AddImageToBody(doc, doc.MainDocumentPart.GetIdOfPart(imagePart));      }    }    // 摘抄自http://msdn.microsoft.com/EN-US/library/office/bb497430(v=office.15).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-5       private 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"           });      // Append the reference to body, the element should be in a Run.      wordDoc.MainDocumentPart.Document.Body.AppendChild(new Paragraph(new Run(element)));    }  }}

本文示例運行效果如下圖所示:

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞西市| 聂拉木县| 嵊泗县| 思茅市| 开鲁县| 卓尼县| 敦煌市| 左云县| 化隆| 朝阳县| 同江市| 曲沃县| 黎城县| 东乡| 洪湖市| 阿巴嘎旗| 资阳市| 财经| 厦门市| 酉阳| 富阳市| 自贡市| 宁安市| 陆丰市| 邹城市| 河东区| 准格尔旗| 沙洋县| 乌兰察布市| 江津市| 栾川县| 讷河市| 禄丰县| 屯昌县| 云龙县| 江门市| 禄劝| 华容县| 都江堰市| 青神县| 佛冈县|