如何从资源插入图片到Excel表格,使用VB2010

我试图添加一个图片到Excel工作表 ,使用VB2010 中的资源文件中的图片 。 我可以使用: xlDATAWorkSheet.Shapes.AddPicture(...)与编码的path,但我想从资源文件中使用它。 这是我试过了: xlDATAWorkSheet.Shapes.AddPicture(CType(My.Resources.ResourceManager.GetObject("Logo"), Bitmap), False, True, 0, 0, 300, 50) ,但是我得到一个错误:未find文件(指向徽标字)*

我也试过: xlDATAWorkSheet.Shapes.AddPicture(My.Resources.Logo, False, True, 0, 0, 300, 50) ,但是我得到相同的错误:找不到文件。

它工作正常与图片硬编码的path,如xlDATAWorkSheet.Shapes.AddPicture("C:/Logo.jpg", False, True, 0, 0, 300, 50),但我想从资源中使用它文件(所以它会在另一台机器上运行)

此外,这工作正常,所以标志图像真的在那里:

 frmMain.pic1.Image = CType(My.Resources.ResourceManager.GetObject("Logo"), Image) 

看来虽然,根据形状的MSDN文档,没有出现AddPicture除了一个string以外的任何东西来确定你想要插入的图像。

任何人都可以帮助插入从VB2010资源的图片到Excel工作表?

您可以在代码中自动使用剪贴板来添加图像以实现卓越。

下面的代码工作在VB NET 2008。

 Dim MyScoreCard As Excel.Worksheet = Nothing Dim MyRange As Excel.Range = Nothing Dim AwayBit As Bitmap =CType(My.Resources.ResourceManager.GetObject("picturename"),Bitmap) Clipboard.Clear() Clipboard.SetDataObject(AwayBit, True) MyRange = CType(MyScoreCard.Range("Q41:Q41"), Excel.Range) MyScoreCard.Paste(MyRange, AwayBit) 'Count will return the index of the last shape pasted to the worksheet Dim idx As Integer idx = MyScoreCard.Shapes.Count 'The code below will allow you to scale the image in excel from vb net MyScoreCard.Shapes.Item(idx).LockAspectRatio = Microsoft.Office.Core.MsoTriState.msoFalse MyScoreCard.Shapes.Item(idx).ScaleWidth(0.75, Microsoft.Office.Core.MsoTriState.msoFalse, Office.MsoScaleFrom.msoScaleFromTopLeft) MyScoreCard.Shapes.Item(idx).ScaleHeight(0.75, Microsoft.Office.Core.MsoTriState.msoFalse, Office.MsoScaleFrom.msoScaleFromTopLeft) 

您不得不传递给该交互函数的参数不幸需要一个文件path的string。

你可以尝试以下方法,看看它是否适合你:

  1. 将资源设置为一个picturebox
  2. 将图片保存为jpeg文件,并将其保存在一个确定的位置(也许一个文件夹在驱动器C :)使用此代码: PictureBox1.Image.Save(SaveFilePath, System.Drawing.Imaging.ImageFormat.Jpeg)请注意, savefilepath不必在其名称中包含.jpeg扩展名
  3. 将savefilepath传递给一个string
  4. 使用savefilepath作为提交给.AddPicture的string
  5. 删除您保存在驱动器C中的临时JPEG文件

冗长的解决scheme,是的。 但是应该在限制下工作。