VSTO技术咨询:如何从嵌入资源向Word文档添加图片?
从嵌入资源向Word文档添加图片的解决方案
你原来的代码无效是因为Resources1.ImageLogo.ToString()返回的是图片对象的类型字符串(比如System.Drawing.Bitmap),而AddPicture方法需要的是实际的文件路径。下面提供两种可行的实现方法:
方法一:通过临时文件加载
将嵌入资源的图片先保存到临时文件,再用AddPicture加载,最后删除临时文件:
using System.IO; using System.Drawing.Imaging; // 从嵌入资源获取图片对象 Image logoImage = Resources1.ImageLogo; // 生成临时文件路径(扩展名需匹配图片格式,此处以PNG为例) string tempFilePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".png"); // 将图片保存到临时文件 logoImage.Save(tempFilePath, ImageFormat.Png); // 定义AddPicture所需的参数 object linkToFile = false; object saveWithDocument = true; object missing = Type.Missing; // 向Word文档添加图片 Globals.ThisDocument.InlineShapes.AddPicture(tempFilePath, ref linkToFile, ref saveWithDocument, ref missing); // 删除临时文件 File.Delete(tempFilePath);
方法二:通过剪贴板粘贴
把嵌入资源的图片放入剪贴板,再粘贴到Word文档中:
using System.Windows.Forms; // 需引用System.Windows.Forms程序集 // 从嵌入资源获取图片对象 Image logoImage = Resources1.ImageLogo; // 将图片复制到剪贴板 Clipboard.SetImage(logoImage); // 粘贴到当前光标位置 Globals.ThisDocument.Application.Selection.Paste(); // 如需指定粘贴位置,可先定位Range再粘贴: // var targetRange = Globals.ThisDocument.Content; // targetRange.Paste();
注意:使用剪贴板方法时,确保项目引用了System.Windows.Forms程序集。
内容的提问来源于stack exchange,提问作者Schumacher57
相关产品推荐
相关产品推荐

