2013-05-14 306 views
4

所以我有这个功能,我正在生成并返回我的图像(.bmp格式)。我想把它写入一个word文档。我看着InlineShapes.AddPicture,但它只需要一个string参数,这需要我物理保存图片,然后将图片的路径作为参数添加到AddPicture中,这是我不想要的。我想生成图片并直接存储它,而我需要一个采用Image参数的方法。如何在Word文档中插入图像对象作为图片

P.S.创建Word文档,表格,决定将图片放入哪个单元格以及所有这些东西都完成了,我只需要插入图片。

这是生成图片的代码,所以您可以看到我只将它作为一个对象,但不要将它存储在任何物理上。这是用C#编写的,但是我想用Word文档操作,我在VB.NET中编写。

Bitmap picture = new Bitmap(100, 100); 

     // generates a QRcode image and returns it 
     public Image generateQRcodeImage(string textValue) 
     { 
      QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M); 
      QrCode qrCode; 
      encoder.TryEncode(textValue, out qrCode); 

      using (Graphics graph = Graphics.FromImage(picture)) 
      { 
       new GraphicsRenderer(new FixedCodeSize(100, QuietZoneModules.Two)).Draw(graph, qrCode.Matrix); 
      } 

      return picture; 
     } 
+0

'this function' ...?显示你的代码。第二,你的意思是你有没有保存的图片?你在哪里拥有它? – 2013-05-14 09:19:14

+0

对不起。我做了一个编辑。 :) – Syspect 2013-05-14 09:35:46

回答

3

如果您设置您的Word文档的创建和开放,并根据您所提供的功能,我想留给你唯一要做的事情是:

Dim rng As Word.Range = oDoc.Range(int1, int2) 

    Dim img As Image = qrGen.generateQRcodeImage("desiredInfoToEncloseInQRcode") 
    Clipboard.SetImage(img) 
    rng.Paste() 

哪里qrGen当然是您的课程的实现generateQRcodeImage()函数的对象。 你也必须把这个代码放在你想要在word文档(表格/单元格等)中排列的地方

+2

我也可能在最后清除剪贴板;将自动化活动中的中间工件遗留下来是不礼貌的。 – 2013-05-14 14:30:15

1

这段代码可以帮助你通过vb.net把图片插入到ms单词中:

Dim word_app As Word._Application = New _ 
Word.ApplicationClass() 

    ' Create the Word document. 
Dim word_doc As Word._Document = _ 
word_app.Documents.Add() 

Dim para As Word.Paragraph = word_doc.Paragraphs.Add() 
para.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter 
para.Range.InlineShapes.AddPicture(YOURPATHPICTURE) 
para.Range.InsertParagraphAfter() 

并且不要忘记导入库。

Imports Microsoft.Office.Interop 

祝你好运!

+0

这适用于我,只要提到'AddPicture()'方法需要图像位置的字符串参数,例如'AddPicture(“d:\ logo.png”)' – 2015-05-16 05:18:14

0

我使用以下变量:

Public oDoct As Microsoft.Office.Interop.Word.Document 
Public oTable As Microsoft.Office.Interop.Word.Table 

我所做的就是这是什么:

1)我有,我想在PictureBox(pict1在Form1上

图片/图) 2)由于我想把它放在桌子上,我创建了表格

oDoct.Sections(1).Headers(1).Range.Bookmarks.Add("mHeader",) 
oTable = oDoct.Tables.Add(oDoct.Sections(1).Headers(1).Range.Bookmarks.Item("mheader").Range, 2, 3) 

请注意,表格将包含在标题中,并添加了书签(“mHeader”),但这不是必需的。我是这样做的,因为我希望我的图像作为标题。

3)I添加书签,在表中,对于画面

oTable.Cell(1, 1).Range.Bookmarks.Add("hPicture_c11") 

4)的图像,然后在剪贴板复制

Clipboard.SetImage(Form1.pict1.Image) 

5)最后,图像被粘贴表内

oTable.Cell(1, 1).Range.Bookmarks.Item("hPicture_c11").Range.Paste() 

“hPicture_c11”书签不是强制性的。如果您想简单地插入图片,请使用以下代码:

oDoct.Range.Bookmarks.Item("\endofdoc").Range.Paste() 

最后一件事:检查图片的尺寸。即使它插入到文档中,也可以将其视为任何图像,如果它太大,您可能需要在Word中调整其大小。