下面介绍如何在word里面插入图片,顺便小弟发现MSDN官网有完整的OpenXML教程,虽然是全英文的不过还是很有帮助的。

Tips,原来摘抄代码里面没有模板,在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)));
} }
}

最新文章

  1. 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域
  2. Appium学习笔记(一)--安装与配置
  3. RouteArea中AreaPrefix(Area 前缀)的使用
  4. Android UI -- 布局介绍(布局包括FrameLayout, LinearLayout, RelativeLayout, GridLayout)
  5. windows server 2003 禁止开机显示“关闭事件跟踪”
  6. 读取spring配置文件的方法(spring读取资源文件)
  7. Response 关于浏览器header的方法
  8. 执行SQL查询脚本
  9. hrbust oj 1025 (计算几何+近似计算)
  10. Lintcode248 Count of Smaller Number solution 题解
  11. Python字节数组【bytes/bytearray】
  12. 网络学习day01_计算机网络与分层思想
  13. 承接Unity外包 U3D外包 Unity3D外包 小型Unity项目外包用Unity还是UE4
  14. 20165214 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 Week3
  15. js 实现仿 淘宝 五星评价 demo
  16. java核心技术-(总结自杨晓峰-java核心技术36讲)
  17. 【Linux】nginx常用命令
  18. 02、natapp的使用
  19. PDO连接数据库-Xmodel
  20. linux 系统中 /etc/passwd 和 /etc/shadow文件详解

热门文章

  1. 【JavaScript】Write和Writeln的区别
  2. swift学习笔记之-可选链式调用
  3. 总结CSS3新特性(媒体查询篇)
  4. iOS自定义字体
  5. Android之登录时密码的保护
  6. 设置UIImage的渲染模式:UIImage.renderingMode
  7. CLLocationManagerDelegate不调用didUpdateLocations (地图)
  8. 【Android】Vitamio 4.0 正式版发布/ Vitamio IOS 测试版发布(2013-07-16)
  9. redis数据类型
  10. HttpClient 教程 (A)