c # добавить картинку, чтобы выделиться из ресурсов - PullRequest
0 голосов
/ 17 мая 2011

В настоящее время я делаю следующее, чтобы добавить изображение в файл Excel, который создаю с помощью «interop»

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 ]

2 голосов
/ 07 июня 2013

Извините или археология.

По второму вопросу, добавив картинку из ресурса, я мог бы найти решение с помощью буфера обмена:

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 голос
/ 18 мая 2011

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 вызывает головную боль.

0 голосов
/ 14 января 2019

RE: 2. Я сделал это:

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