繁体   English   中英

使用Open XML SDK读取上传的pptx文件

[英]Read uploaded pptx file with Open XML SDK

我正在尝试构建一个可以上传.pptx文件的网站,并检查一些方面(例如幻灯片计数)。 我有Open XML SDK 2.5,我添加了对它的引用。 然而,当我尝试使用SDK中的命令时,它们不可用。

(另外,我真的需要一个内存流来处理文件吗?我不想存储文件,只是从中提取一些细节。)

我的代码是在VB中,但我也可以阅读C#:

Partial Class uploadpresentation
 Inherits System.Web.UI.Page

 Protected Sub Upload_Click(sender As Object, e As EventArgs) Handles Upload.Click
    If PptxUpload.HasFile AndAlso PptxUpload.FileName.EndsWith(".pptx") Then
        ProcessFile(PptxUpload.PostedFile)
    End If
 End Sub

 Sub ProcessFile(ByVal pptxFile As HttpPostedFile)

    using (MemoryStream memoryStream = new MemoryStream())

    Using doc As PresentationDocument = PresentationDocument.Open(fileName, False)

    outputMessage = "Number of slides: " & argh

 End Sub
End Class

我的Web.config有这个:

  <assemblies>
    <add assembly="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>

因此,无法识别MemoryStream和PresentationDocument。 我在这里错过了什么?

非常感谢你!

上传的文件以流形式发送,直到您实际将其写入某个位置。 您不会在问题中提供的代码中执行此操作。 您只需将HttpPostedFile的stream属性传递给Open方法即可。

以下是您应该如何获得幻灯片计数(C#):

public void ProcessFile(HttpPostedFile pptxFile)
{
    int slideCount = 0;

    using (var doc = PresentationDocument.Open(pptxFile.InputStream, false))
    {
        PresentationPart presentationPart = doc.PresentationPart;
        slideCount = presentationPart.SlideParts.Count();
    }
}

有关更多信息,请参阅有关检索幻灯片计数的文档

Wered问题,但是,有添加导入部分吗?

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using DocumentFormat.OpenXml;

您是使用gac的引用还是将OpenXml dll存储为文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM