using ClosedXML.Excel; using ClosedXML.Excel.Drawings; using System.IO; using System.Reflection; namespace ClosedXML_Examples { public class ImageAnchors : IXLExample { public void Create(string filePath) { using (var wb = new XLWorkbook()) { IXLWorksheet ws; using (Stream fs = Assembly.GetExecutingAssembly().GetManifestResourceStream("ClosedXML_Examples.Resources.ImageHandling.png")) { ws = wb.Worksheets.Add("Images1"); #region AbsoluteAnchor ws.AddPicture(fs, XLPictureFormat.Png, "Image10") .MoveTo(220, 150); #endregion AbsoluteAnchor #region OneCellAnchor fs.Position = 0; ws.AddPicture(fs, XLPictureFormat.Png, "Image11") .MoveTo(ws.Cell(1, 1)); #endregion OneCellAnchor ws = wb.Worksheets.Add("Images2"); #region TwoCellAnchor fs.Position = 0; ws.AddPicture(fs, XLPictureFormat.Png, "Image20") .MoveTo(ws.Cell(6, 5), ws.Cell(9, 7)); #endregion TwoCellAnchor } using (Stream fs = Assembly.GetExecutingAssembly().GetManifestResourceStream("ClosedXML_Examples.Resources.SampleImage.jpg")) { // Moving images around and scaling them ws = wb.Worksheets.Add("Images3"); ws.AddPicture(fs, XLPictureFormat.Jpeg) .MoveTo(ws.Cell(2, 2), 20, 5, ws.Cell(5, 5), 30, 10) .MoveTo(ws.Cell(2, 2), ws.Cell(5, 5)); ws.AddPicture(fs, XLPictureFormat.Jpeg) .MoveTo(ws.Cell(6, 2), 2, 2, ws.Cell(9, 5), 2, 2) .MoveTo(ws.Cell(6, 2), 20, 5, ws.Cell(9, 5), 30, 10); ws.AddPicture(fs, XLPictureFormat.Jpeg) .MoveTo(ws.Cell(10, 2), 20, 5) .Scale(0.2, true) .MoveTo(ws.Cell(10, 1)); } using (Stream fs = Assembly.GetExecutingAssembly().GetManifestResourceStream("ClosedXML_Examples.Resources.SampleImage.jpg")) { // Changing of placement ws = wb.Worksheets.Add("Images4"); ws.AddPicture(fs, XLPictureFormat.Jpeg) .MoveTo(100, 100) .WithPlacement(XLPicturePlacement.FreeFloating); // Add and delete picture immediately ws.AddPicture(fs, XLPictureFormat.Jpeg) .MoveTo(100, 600) .Delete(); } wb.SaveAs(filePath); } } } }