Click here to Skip to main content
15,667,355 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more: , +
Hi All,

I have a requirement in my project to add multiple images on the fly. The images are dynamically obtained from another source (the image path is obtained) and i need to paste them at a particular location on the excel sheet.

I am able to add single image successfully to spreadsheet (with OR without comments) but when i try to add one more image the excel was not opening. I am using "two anchor cell" method for adding the image.

Can anyone post a sample code ?

Thanks and Regards,

YKK Reddy

1 solution


I have solved it myself. I am posting it here just in case anyone else needs.

I modified the code for the "Drawing" class. The below code is mentioned:

if (imageNumber == 1)            
Drawing drawing = new Drawing() { Id = "rId" + drawingPartId.ToString() };                
//Check whether the WorksheetPart contains VmlDrawingParts (LegacyDrawing element)                

if (sheet1.VmlDrawingParts == null)                
//if there is no VMLDrawing part (LegacyDrawing element) exists, just append the drawing part to the sheet                    sheet1.Worksheet.Append(drawing);                
//if VmlDrawingPart (LegacyDrawing element) exists, then find the index of legacy drawing in the sheet and inserts the new drawing element before VMLDrawing part                    
int legacyDrawingIndex = GetIndexofLegacyDrawing(sheet1);                    
if (legacyDrawingIndex != -1)                        sheet1.Worksheet.InsertAt<OpenXmlElement>(drawing, legacyDrawingIndex);                    

The complete set of code is available at ""

In the code available in above link we need to just modify the "Drawing" part
Share this answer
S Anilranjan 23-Feb-16 1:32am    
when are you setting this integer - imageNumber

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900