首页 > 解决方案 > 如何在 ASP.NET MVC C# 项目的新选项卡中打开 PowerPoint 演示文稿

问题描述

我正在开发一个 ASP.NET MVC 应用程序,它有一些我想在新选项卡上显示的电源点。

我曾使用 openxml 读取文件,但我不知道如何打开它。

我读取文件的代码:

    public ActionResult Index()
    {
        StringBuilder sb = new StringBuilder();
        string file = Server.MapPath("~/PPTFiles/Test.pptx");

        int numberOfSlides = CountSlides(file);

        string slideText;

        for (int i = 0; i < numberOfSlides; i++)
        {
            // Get slide text.
            GetSlideIdAndText(out slideText, file, i);
            sb.Append(slideText);
        }

        return View();
    }

    public static int CountSlides(string presentationFile)
    {
        using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))
        {
            return CountSlides(presentationDocument);
        }
    }

    public static int CountSlides(PresentationDocument presentationDocument)
    {
        if (presentationDocument == null)
        {
            throw new ArgumentNullException("presentationDocument");
        }

        int slidesCount = 0;

        PresentationPart presentationPart = presentationDocument.PresentationPart;

        if (presentationPart != null)
        {
            slidesCount = presentationPart.SlideParts.Count();
        }

        return slidesCount;
    }

    public static void GetSlideIdAndText(out string slideText, string docName, int index)
    {
        using (PresentationDocument ppt = PresentationDocument.Open(docName, false))
        {
            PresentationPart part = ppt.PresentationPart;
            OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements;
            string relId = (slideIds[index] as SlideId).RelationshipId;
            SlidePart slide = (SlidePart)part.GetPartById(relId);
            StringBuilder paragraphText = new StringBuilder();
            IEnumerable<A.Text> texts = slide.Slide.Descendants<A.Text>();

            foreach (A.Text text in texts)
            {
                paragraphText.Append(text.Text);
            }

            slideText = paragraphText.ToString();
        }
   }

你能帮我解决这个问题吗?

标签: c#asp.net-mvcpowerpointopenxml

解决方案


您无法在浏览器中打开 pptx 文件。您应该将 .pptx 文件放在服务器上的目录中。并将其链接到一个按钮。当用户单击按钮时。它会打开。


推荐阅读