2017-05-17 1 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. 그들은

는 "마이크로 소프트는 현재 권장하지 않습니다 재진입과 확장 성이없는 Office가있을 때 Office가 불안정한 동작 및/또는 교착 상태를 나타낼 수 있으므로 무인 대화 형 클라이언트 응용 프로그램 또는 구성 요소 (ASP, ASP.NET, DCOM 및 NT 서비스 포함)에서 Microsoft 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 셀과 같은 타사 라이브러리를 사용하십시오. https://www.aspose.com/products/cells/net – Oscar

관련 문제