使用Word Interop时遇到问题-在模板上插入图像

时间:2018-12-12 14:04:52

标签: vb.net ms-word office-interop

我尝试了多种不同的解决方案来尝试将图像插入文档模板。我取得了一些成功,但没有达到预期的效果。基本上,我只是想在所有其他内容上方的文档顶部插入图像。图片最多应将其余内容移到页面的下方,而不是放在顶部。

execv

用以下内容替换上面的评论,我已经成功了。下面将图像插入到标题中。但是无论定义图像参数如何,图像都会以非常奇怪的方式缩放。

    With objDoc
        Dim filePath As String = Path.Combine(appPath, fileName)
        If Not filePath = "" Then
            Dim img As Image = Image.FromFile(filePath)
            Dim imgX As Integer = img.Width
            Dim imgY As Integer = img.Height

            'insert picture here
        End If
    End With

以下内容将在标题下方和文本顶部插入图像。尝试将其转换为inlineshape会引发异常。在这种情况下,给画布一个 .PageSetup.DifferentFirstPageHeaderFooter = True .Sections(1).Headers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Shapes.AddPicture( FileName:=filePath, LinkToFile:=False, SaveWithDocument:=True, Left:=0, Top:=0, Width:=imgX, Height:=imgY ).ConvertToInlineShape() 开始会忽略模板边距,并将图像放置在图纸的左边缘。即使我将其向右移动并使文本向下移动,由于顶部的空白过多,还是不理想的。

0,0

下面的其余部分是尝试通过msdn和其他各种渠道进行筛选的尝试。这些都不显示任何图像。

        Dim objCanvas As Word.Shape = objWordApp.ActiveDocument.Shapes.AddCanvas(Left:=0, Top:=0, Width:=imgX, Height:=imgY)
        objCanvas.CanvasItems.AddPicture(FileName:=filePath, LinkToFile:=False, SaveWithDocument:=True)

文档本身只是具有某种格式的四个表。我到底在做什么错了?

1 个答案:

答案 0 :(得分:0)

以下代码来自我的VB.Net加载项之一。

                rng = rng.Rows(1).Cells(1).Range
                rng.Delete()
                rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
                rng.InlineShapes.AddPicture(.SelectedItems(i))

它将图像添加到表格单元格中。 “ SelectItems(i)”引用指向用户从msoFileDialogFilePicker函数中选择的图像文件,您可以将其更改为图像的任何已知文件路径。我发布它是为了向您展示实际代码的示例。

将图像放置在文档顶部就像将插入范围设置到该位置一样简单。以下代码将完成此操作。

Dim rng as Word.Range
rng = ActiveDocument.Content
rng.Collapse(Word.WdCollapseDirection.wdCollapseStart)
rng.InlineShapes.AddPicture(Your Path)