c#从资源中添加图片到excel

时间:2011-05-17 17:28:23

标签: c# excel resources interop

我目前正在执行以下操作,将图像添加到我正在通过“interop”创建的excel文件中

private Excel.Workbook _xlWorkBook;
_xlWorkSheet.Shapes.AddPicture(appPath + @"\ImageFile.png", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 5, 5, 60, 60);

如果可以,我有几个问题。

  1. 如果添加图片,我该如何访问图片 - 例如在它上画一个边框。
  2. 为我的应用程序执行上述操作意味着我必须分发图像文件,所以我想我会把它放在应用程序资源中。如何将资源中的图像添加到Excel文件中?再次添加后,如何访问它以添加边框等?

    _xlWorkSheet.Shapes.AddPicture(Properties.Resources.ImageFile); //不能工作

  3. 非常感谢

3 个答案:

答案 0 :(得分:2)

抱歉或考古学。

对于第二个问题,从资源中添加图片,我可能已经找到了使用剪贴板的解决方案:

System.Drawing.Bitmap pic = Properties.Resources.my_ressource;
System.Windows.Forms.Clipboard.SetImage(pic);
Range position = (Range)myWorksheet.Cells[Y, X];
myWorksheet.Paste(position); //copy the clipboard to the given position

答案 1 :(得分:1)

1。)我相信您可以使用

访问图片
// after adding the picture
Picture pic = (Picture) ActiveSheet.Pictures(ActiveSheet.Pictures.Count - 1);
pic.Border.LineStyle = XlLineStyle.xlContinuous;
pic.Border.Weight = XlBorderWeight.xlMedium;

或者

// add the picture using Pictures.Insert
// this should return a Picture cast-able object
Picture pic = (Picture) ActiveSheet.Pictures.Insert(FileName);
// etc...

2。)最简单的方法是从资源中提取文件,将其写入临时文件,将其添加到Excel中,然后删除临时文件。

此代码非常未经测试。 Excel互操作是头痛。

答案 2 :(得分:0)

RE:2.我这样做:

S = Shapes.AddPicture(filename,MsoTriState.msoFalse,MsoTriState.msoTrue,0,0,50,50);
S.Name = "Picture";
S.Placement = XlPlacement.xlMoveAndSize;