2017-05-17 149 views
0

我想打開並更新IIS服務器上的xls文件並將其作爲下載發送給用戶。以下代碼正在開發IIS Express環境下正常工作。但是當我在IIS服務器上部署它時,服務器似乎掛在Workbooks.open函數上。IIS無法打開XLS

// Copy template to the given file 
      System.IO.File.Copy(Server.MapPath("~") + "\\App_Data\\template.xls", file, true); 

      // Get current project id 
      int activeProjectID = Convert.ToInt32(Session["activeProjectID"]); 

      // Open workbook 
      oXL = new Microsoft.Office.Interop.Excel.Application(); 
      oXL.Visible = true; 
      oXL.DisplayAlerts = false; 
      mWorkBook = oXL.Workbooks.Open(file, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); 

      //Get all the sheets in the workbook 
      mWorkSheets = mWorkBook.Worksheets; 

回答

1

使用Office Interop庫進行服務器端自動化不是受支持的方案,而是在尋求麻煩。它會產生很多的問題,因爲:

  1. 需要用戶身份
  2. 他們與桌面交互
  3. 他們沒有重入和可擴展性

「微軟目前並不提倡並且不支持從任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM和NT服務)自動化Microsoft Office應用程序,因爲Office可能會在Office出現時出現不穩定行爲和/或死鎖跑 在這個環境中。「

https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office

+0

感謝奧斯卡,有什麼其他選擇呢?我需要用數據庫中的宏創建一個excel文件。 – Tom

+0

@Tom如果您絕對需要使用舊的xls二進制格式,請使用Office 2003 XML格式或Open XML或Aspose Cells等第三方庫https://www.aspose.com/products/cells/net – Oscar