2011-01-27 6 views
1

기존 웹 응용 프로그램에서 일부 데이터에 대해 Excel 스프레드 시트를 생성하는 데 사용되는 페이지가 지원됩니다. 웹 서버에는 Excel 2002가 설치되어 있으므로 Excel 개체의 자동화를 사용하여 작업을 수행합니다.IIS7.5의 ASP에서 Excel 파일 생성

저는 Microsoft에서 이와 같은 Excel 자동화를 권장하지는 않지만 Microsoft에서 권장하지는 않습니다. 현재이 방법이 현재 작동하며이를 변경하기위한 시간이 절대로 할당되지 않았습니다. 여기

몇 가지 샘플 코드

Dim xlApp, xlBook, xlSheet 

'create the Application Object and workbook object 
Set xlApp = Server.CreateObject("Excel.Application") 
Set xlBook = xlApp.Workbooks.Add 
Set xlSheet = xlBook.Worksheets.Add 

'turn off any alerts 
xlApp.DisplayAlerts = False 
xlApp.Visible = False 
xlApp.ScreenUpdating = False 
xlApp.DisplayFormulaBar = True 
xlApp.CommandBars("Standard").Visible = True 
xlApp.CommandBars("Formatting").Visible = True 
xlApp.CommandBars("Chart").Visible = True 
xlApp.CommandBars("Control Toolbox").Visible = True 

xlSheet.Cells(1, 1).Value = "Test" 

xlApp.ScreenUpdating = True 

xlApp.ActiveWorkbook.SaveAs ("C:\Temp\Test.xls"), -4143 
xlApp.Quit 

Set xlApp = Nothing 

웹 서버가 IIS6을 실행하는 Windows 2003 서버, 그리고 모두가 행복하게 작동합니다. 그러나 현재 IIS7.5를 실행하는 Windows 2008 서버를 사용하도록 업그레이드하고 있으며 위 코드는 더 이상 작동하지 않습니다.

Microsoft Excel error '800a03ec' 

SaveAs method of Workbook class failed 

xxxxxx/Test_Excel.asp, line 42 

것은이고, 나는 위의 코드와 간단한 .vbs 파일을 생성하고 실행하면, 모든 작품이 예상대로입니다 다음과 같이 반환되는 메시지입니다. ASP 페이지로 실행하면 실패합니다.

폴더에 쓰기 권한이 있어야 올바른 사용 권한 (전체 액세스 권한이있는 '모든 사용자')을 추가해야합니다.

왜 이런 일이 발생했는지에 대한 의견이 있으십니까?

감사합니다.

답변

1

우선 내가 작성하려고하는 폴더에서 Everyone 그룹을 제거하면 다른 날에 보안상의 골칫거리가 될 수 있습니다.

인증을 위해 사이트를 구성 할 수있는 몇 가지 방법이 있는데, 이는 Excel COM 서버가 시작할 ID를 결정합니다. ,

<% 
Dim xlApp, xlBook, xlSheet 
'create the Application Object and workbook object 
Set xlApp = Server.CreateObject("Excel.Application") 
Set xlBook = xlApp.Workbooks.Add 
Set xlSheet = xlBook.Worksheets.Add 
%> 

열기 작업 관리자은 "프로세스"탭을 선택합니다

그러나, 하나 볼 것이 아니라, 바로이 작업을 수행하는 스크립트를 만들 수 있습니다. "모든 사용자의 프로세스 표시"가 사용 가능한지 확인하고 이미지 이름별로 프로세스를 정렬하십시오.

위의 스크립트를 찾아 당신이에 Excel.exe 프로세스 목록에 나타납니다 :

enter image description here

을 세 번째 열에서 당신은 Excel이 실행되고 신원을 확인할 수 있습니다. 이 계정은 c:\Temp 폴더에 대한 쓰기 권한이 필요합니다.

이렇게하면 Excel.exe을 수동으로 삭제해야합니다. 그렇지 않으면 계속 실행됩니다.

+0

건배. 현재 Excel XML을 사용하도록 전환 했으므로 더 이상 Excel.Exe가 필요하지 않습니다. 그러나 나중에 다시 참조하고 나중에 제안 할 내용을 시도해 볼 것입니다. –

0

유일한 권장 사항은 IIS7에서 응용 프로그램 풀을 확인하는 것입니다. 응용 프로그램 풀의 고급 설정에서 ID 계정을 기본 제공 기능 중 하나로 변경해야 할 수 있습니다. 기본적으로 IIS7.5 +에서는 동적 계정이 응용 프로그램 풀의 이름과 함께 사용되며 작업 관리자에 이름과 함께 나타납니다.