Click here to Skip to main content
15,886,199 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I google many codes but its not working. Want to download the bar graph im ppt(power point presentation) using open Xml in MVC.

What I have tried:

C#
public ActionResult Index(FormCollection form)
        {
            try
            {
                //Save Image of jqPlot Chart to a file
                string fileName = Guid.NewGuid().ToString() + ".jpg";
                var data = form["imgData"].Replace("data:image/png;base64,", "");
                Byte[] bitmapData = new Byte[data.Length];
                bitmapData = Convert.FromBase64String(FixBase64ForImage(data));
                System.IO.MemoryStream streamBitmap = new System.IO.MemoryStream(bitmapData);
                Bitmap bitImage = new Bitmap((Bitmap)Image.FromStream(streamBitmap));
                //bitImage.Save(Server.MapPath("~/content/") + fileName);// This statement will save file locally as an Image.

                //Insert the jqPlot Chart's Image into PowerPoint
                using (PresentationDocument prstDoc = PresentationDocument.Open(Server.MapPath("~/content/") + "Template.pptx", true))
                {
                    string imgId = "rId" + new Random().Next(2000).ToString();
                    ImagePart imagePart = prstDoc.PresentationPart.SlideParts.FirstOrDefault().AddImagePart(ImagePartType.Jpeg, imgId);
                    imagePart.FeedData(new MemoryStream(bitmapData.ToArray()));
                    DocumentFormat.OpenXml.Drawing.Blip blip = prstDoc.PresentationPart.SlideParts.FirstOrDefault().Slide.Descendants<documentformat.openxml.drawing.blip>().First();
                    blip.Embed = imgId;
                    prstDoc.PresentationPart.SlideParts.FirstOrDefault().Slide.Save();
                    prstDoc.PresentationPart.Presentation.Save();
                    prstDoc.Close();
                }
                return File(Server.MapPath("~/content/") + "Template.pptx", "application/mspowerpoint", "BarGraphPPT.pptx");
            }
            catch (Exception ex)
            {
                return Content(ex.Message);
            }
        }
        public string FixBase64ForImage(string Image)
        {
            System.Text.StringBuilder sbText = new System.Text.StringBuilder(Image, Image.Length);

            sbText.Replace("\r\n", String.Empty);

            sbText.Replace(" ", String.Empty);

            return sbText.ToString();
        }

    }
Posted
Updated 12-Nov-19 23:13pm
v2
Comments
MadMyche 13-Nov-19 7:35am    
Is the original chart being generated directly from user entered data; OR, or is being generated from an MVC Model?
Member 13854008 19-Nov-19 1:43am    
being generated from mvc model

1 solution

 
Share this answer
 

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