Openxml - 嵌入式excel破坏了ppt

时间:2018-02-25 09:36:52

标签: c# asp.net powerpoint openxml openxml-sdk

在我通过openxml将excel嵌入到powerpoint文件后,Powerpoint显示“无法读取对象”。 我使用了一个简单的Excel图表和已经创建的pptx。 这在.NetCore和.NetFramework中都失败了 这是我的代码。

        string PPTFileName = @"c:\tmp\Example04.pptx";
        string spreadsheetFileName = @"c:\tmp\demoOut5.xlsx";
        using (PresentationDocument myPresDoc = PresentationDocument.Open(PPTFileName, true))
        {
            SlidePart slidePartBookMark = null;
            string chartPartIdBookMark = "";
            foreach (var slidePart in myPresDoc.PresentationPart.SlideParts)
            {
                if (slidePart.ChartParts.Any())
                {
                    slidePartBookMark = slidePart;

                    var chartPart = slidePart.ChartParts.First();
                    chartPartIdBookMark = slidePart.GetIdOfPart(chartPart);
                    slidePart.DeletePart(chartPart);
                    slidePart.Slide.Save();
                    break;
                }
            }
            var newChartPart = slidePartBookMark.AddNewPart<ChartPart>(chartPartIdBookMark);
            EmbeddedPackagePart embPackage = newChartPart
                    .AddNewPart<EmbeddedPackagePart>("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "rId1");
            embPackage.FeedData(new FileStream(@"c:\tmp\demoOut4.xlsx", FileMode.Open, FileAccess.Read));
            DocumentFormat.OpenXml.Drawing.Charts.ExternalData ed = new DocumentFormat.OpenXml.Drawing.Charts.ExternalData();
            ed.Id = "rId1";

            slidePartBookMark.Slide.Save();
            myPresDoc.Close();
            Console.WriteLine("Done");
            Console.ReadKey();
         }

任何帮助或指示都将不胜感激。感谢。

0 个答案:

没有答案