EM_Y Ответов: 1

Удалить/удалить изображение из файла excel с помощью C#


я хочу удалить определенное изображение из файла excel sheet , но я не нашел ничего или большинство кода, который я нашел, не соответствует моему методу excel.Взаимодействие !

Что я уже пробовал:

 Excel.Application APPXL = new Excel.Application();      
    Excel.Workbook RapportXlWorkBook = APPXL.Workbooks.Open(excelfilePath)
    Excel.Worksheet RapportXlSheet = (Excel.Worksheet)RapportXlWorkBook.Worksheets[1];

/// remove code 
 //RapportXlSheet.Shapes(imageName).Delete !!! ?? 


Я нашел только то , как удалить все фигуры (картинки/изображения) в файле excel, но не конкретную фигуру !
foreach (Excel.Shape sh in RapportXlSheet.Shapes)
            {
                sh.Delete();
            }

1 Ответов

Рейтинг:
4

Richard Deeming

Похоже, у тебя есть VBA / VB.NET пример кода, и вам нужно преобразовать его в C#. Попробуй:

RapportXlSheet.Shapes[imageName].Delete();

РЕДАКТИРОВАТЬ: Как обсуждалось в комментариях, индексатор не поддерживается должным образом. Вы должны использовать Item метод вместо этого:
RapportXlSheet.Shapes.Item(imageName).Delete();


Maciej Los

5ed!

EM_Y

Спасибо за вашу помощь и время , но это не работает ! :) @Ричард Диминг

Richard Deeming

- Это не работает." это не описание проблемы, с которой кто - то может вам помочь.

EM_Y

вы правы ,
Я постараюсь объяснить получше.

Когда я использовал

 RapportXlSheet.Shapes[imageName].Delete(); 


Сообщение об ошибке показывает : невозможно применить индексацию с помощью [] к выражению типа 'Microsoft.Офис.Взаимодействие.Превосходить.Формы"!

*Я ценю ваше внимание :) .

Richard Deeming

Ладно, попробуй:

RapportXlSheet.Shapes.Item(imageName).Delete();
Иногда Interop не может правильно обрабатывать индексатор и вместо этого предоставляет его как метод.

EM_Y

Вы гений :p ^^ , это работает идеально .
Я ценю вашу помощь .

EM_Y

Я нашел также, Как удалить все фигуры (картинки/изображения ) из файла excel, но не смог преобразовать его, чтобы удалить только одну конкретную фигуру !

foreach (Excel.Shape sh in RapportXlSheet.Shapes)
            {
                sh.Delete();
            } 

Ziee-M

Не могли бы Вы отметить это решение как ответ?

EM_Y

Сделано.