我正在尝试使用VB2010 使用资源文件中的图片将图片添加到Excel工作表。我可以使用xlDATAWorkSheet.Shapes.AddPicture(...)
编写路径,但我想从资源文件中使用它。
这就是我尝试过的:
xlDATAWorkSheet.Shapes.AddPicture(CType(My.Resources.ResourceManager.GetObject("Logo"), Bitmap), False, True, 0, 0, 300, 50)
,但我收到错误:找不到文件(指向徽标字)*
我也尝试过:
xlDATAWorkSheet.Shapes.AddPicture(My.Resources.Logo, False, True, 0, 0, 300, 50)
,但我得到了相同的错误:找不到文件。
它适用于硬编码图片的路径,如xlDATAWorkSheet.Shapes.AddPicture("C:/Logo.jpg", False, True, 0, 0, 300, 50),
,但我想从资源文件中使用它(因此它将在另一台机器上运行)
此外,这项工作正常,因此Logo图像确实存在:
frmMain.pic1.Image = CType(My.Resources.ResourceManager.GetObject("Logo"), Image)
似乎,根据形状的MSDN文档,似乎没有AddPicture采用除字符串之外的任何内容来确定要插入的图像。
任何人都可以帮助将资源中的图片插入VB2010中的Excel工作表吗?
答案 0 :(得分:1)
您可以在代码中自动使用剪贴板将图像添加到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)
答案 1 :(得分:0)
遗憾的是,您必须传递给该excel互操作函数的参数需要一个文件路径字符串。
您可以尝试以下方法,看看它是否适合您:
PictureBox1.Image.Save(SaveFilePath, System.Drawing.Imaging.ImageFormat.Jpeg)
请注意,savefilepath不必包含.jpeg扩展名称冗长的解决方案,是的。但是应该给予限制。