如何将图像从剪贴板粘贴到Word

How to paste image from clipboard to Word

我以编程方式将 word 文档中的图像复制到剪贴板。

我想使用 C# 将该图像粘贴到另一个 word 文件中,Microsoft.Office.Interop.Word 作为 word 参考。

这是代码:

foreach (Words.InlineShape shape in document.InlineShapes)
{
    if (shape != null)
    {
        if (shape.Type == Words.WdInlineShapeType.wdInlineShapePicture)
        {
             shape.Select();
             app.Selection.CopyAsPicture();
             Words.Document doc = app.Documents.Add();

             System.Drawing.Image img = null;
             if (Clipboard.ContainsImage())
             {
                  img = Clipboard.GetImage();
                  IDataObject idata = Clipboard.GetDataObject();
             }
         }
    }
}

您无需直接使用剪贴板,只需使用 Word 自带的粘贴功能将其粘贴回去即可。例如:

doc.Content.Paste();

但首先问问自己是否真的需要使用剪贴板。使用剪贴板意味着你会在剪贴板上留下一张大图片(浪费内存),除非你清理它,这也意味着你丢失了剪贴板的原始内容,这可能会让你的用户感到不安。考虑使用 RangeFormattedText 代替:

targetRange.FormattedText = sourceRange.FormattedText

FormattedText 属性 复制所有文本 和格式 并且包括任何嵌入的字段、表格、图片等。(您需要开始范围包括原始图片的锚点)。您可以通过 Range 属性 获得 InlineShape 的范围。 (对于浮动 Shape,您将使用 Anchor 属性)。