2012-03-08 150 views

回答

0

我使用此代碼

using System.IO; 
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; 

你可以通過在Word文檔中的路徑調用InsertAPicture方法,以及文件的路徑包含圖片。

string document = @"C:\Users\Public\Documents\Word9.docx"; 
string fileName = @"C:\Users\Public\Documents\MyPic.jpg"; 
InsertAPicture(document, fileName); 


public static void InsertAPicture(string document, string fileName) 
{ 
using (WordprocessingDocument wordprocessingDocument = 
    WordprocessingDocument.Open(document, true)) 
{ 
    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)); 
} 
} 

    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))); 
} 
0

您應該閱讀約Word Automation Services。它們允許您將不同的文檔合併爲一個。
您也可以隨時建立自己的Word文檔:Generating Documents from SharePoint with Open XML Content Controls

+0

感謝,但內容控制在類型開放式XML:圖片 ·允許單個值(圖) ·不是容器 ·不綁定能...... [PLZ檢查此鏈接(HTTP:// blogs.staffdotnet.com/johanngranados/blog/default.aspx?id=31&t=Content-Control-Types-in-Open-Xml-Part) – 2012-03-08 08:14:36

1

使用「快速部件」下的「文檔屬性」可以將SharePoint列表或庫中的圖像插入到庫中。通常不支持圖片和URL,但將URL快速轉換爲文本字段可解決此問題。

相關問題