一千萬個為什麽

搜索

asp.net中的辦公自動化問題。如果我知道如何,我可以使用開放式辦公室等替代方案

我有一個ASP.NET 2.0 Web應用程序,應該上傳一個ppt文件,然後將其幻燈片提取到圖像。為此我導入了office.dll和Microsoft.Office.Interop.PowerPoint.dll程序集並編寫了以下代碼

public static int ExtractImages(string ppt, string targetPath, int width, int height)
    {
        var pptApplication = new ApplicationClass();

        var pptPresentation = pptApplication.Presentations.Open(ppt, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

        var slides = new List();

        for (var i = 1; i <= pptPresentation.Slides.Count; i++)
        {
            var target = string.Format(targetPath, i);
            pptPresentation.Slides[i].Export(target, "jpg", width, height);
            slides.Add(new FileInfo(target).Name);
        }

        pptPresentation.Close();

        return slides.Count;
}

如果我在本地機器,asp.net或可執行文件中運行此代碼,它運行完美。但是,如果我嘗試在生產服務器中運行它,我會收到以下錯誤:

System.Runtime.InteropServices.COMException(0x80004005):PowerPoint   無法打開文件。在   Microsoft.Office.Interop.PowerPoint.Presentations.Open(字符串   FileName,MsoTriState ReadOnly,MsoTriState Untitled,MsoTriState   WithWindow)at PPTImageExtractor.PptConversor.ExtractImages(String   caminhoPpt,String caminhoDestino,Int32 largura,Int32 altura,String   caminhoThumbs,Int32 larguraThumb,Int32 alturaThumb,Boolean geraXml)   在Upload.ProcessRequest(HttpContext context)

該過程與用戶NT AUTHORITY \ NETWORK SERVICE一起運行。 IIS配置為使用匿名身份驗證。匿名用戶是管理員,我將其設置為允許應用程序運行而不必擔心權限。

在我的開發機器上,我有辦公室2010 beta1。我已經使用Office 2007測試了可執行文件。如果我從服務器中的可執行文件運行代碼,安裝了Office 2003,它就可以完美運行。

為確保權限不會出現任何問題,服務器中的每個人都可以完全訪問該網站。該網站在IIS7和經典模式下運行。

我還聽說Open-office有一個能夠做到這一點的API,但我找不到任何關於它的東西。我不介意使用DLLImport做我必須做的事情,我可以在Web服務器上安裝open-office。不要擔心重寫這個方法,只要參數相同,一切都會起作用。

我感謝您的幫助。

最佳答案

不要從ASP.NET應用程序使用Office Interop。請參閱服務器端Office自動化的註意事項

但是,如果您沒有其他選擇,則需要在Windows Server 2008上創建以下目錄以使其正常工作:

Windows 2008 Server x64:C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop Windows 2008 Server x86:C:\ Windows \ System32 \ config \ systemprofile \ Desktop

轉載註明原文: asp.net中的辦公自動化問題。如果我知道如何,我可以使用開放式辦公室等替代方案