如何从资源插入图片到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。
你可以尝试以下方法,看看它是否适合你:
- 将资源设置为一个picturebox
- 将图片保存为jpeg文件,并将其保存在一个确定的位置(也许一个文件夹在驱动器C :)使用此代码:
PictureBox1.Image.Save(SaveFilePath, System.Drawing.Imaging.ImageFormat.Jpeg)
请注意, savefilepath不必在其名称中包含.jpeg扩展名 - 将savefilepath传递给一个string
- 使用savefilepath作为提交给.AddPicture的string
- 删除您保存在驱动器C中的临时JPEG文件
冗长的解决scheme,是的。 但是应该在限制下工作。