ASP에서 Excel을 사용하는 한 가지 방법은 Excel 파일을 데이터베이스로 연결하는 것입니다. 그러면 작업은 데이터베이스 액세스 작업과 유사합니다. 그러나 Excel은 관계형 데이터베이스가 아니기 때문에 이 방법이 항상 유용한 것은 아닙니다. 셀 병합, 테두리 선 스타일, 패턴, 셀 간의 수식 관계 등이 복잡한 고정 형식의 경우, 가장 이해하기 쉬운 방법은 백그라운드에서 기존 설정을 여는 것입니다. 템플릿 파일을 만든 다음 여기에 데이터를 삽입합니다. 필요, 저장, 출력...
여기서 언급하는 방법은 엑셀 객체를 직접 생성하는 방법으로, 백그라운드에서 엑셀 문서에 대한 다양한 작업을 보다 쉽게 수행할 수 있다.
서버 측에서 설정해야 하는 또 다른 사항은 COM 구성 요소의 작업 권한입니다. 명령줄에 "DCOMCNFG"를 입력하여 COM 구성 요소 구성 인터페이스로 들어갑니다. Microsoft Excel을 선택하고 속성 버튼을 클릭합니다. 편집하는 동안 모든 권한에 대해 사용자 정의를 선택합니다. 저장 후 서버를 다시 시작하세요.
매우 중요합니다. 설정하지 않으면 다른 컴퓨터에서 Excel 개체 생성을 완료할 수 없습니다.
하지만 이 방법 역시 단점이 있는데, 실제 작업을 해보면 서버에 이미 열려 있는 엑셀 파일이 있는데도 같은 파일을 실행하면 여전히 에러가 발생하는 경우가 있는 것 같습니다. 아직 설정되지 않은 장소.
또한 위에 인용된 기사의 예제 코드 형식은 완전하지 않으며 줄 바꿈 및 공백의 대부분이 정확한 형식이 아닙니다. 코드가 완전하다면 코드를 복사하기만 하면 성공적으로 실행될 것이며 천천히 조사해 보세요. 이제 수정된 코드는 다음과 같습니다(차트를 그리는 부분은 삭제되었습니다).
<%
오류 발생 시 다음 재개
strAddr=Server.MapPath(".")
set objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=false
objExcelApp.Application.Visible=false
objExcelApp.WorkBooks.Open(strAddr&"TemletNull.xls")
objExcelBook=objExcelApp.ActiveWorkBook 설정
objExcelSheets=objExcelBook.Worksheets 설정
set objExcelSheet=objExcelBook.Sheets(1)
objExcelSheet.Range("B2:k2").Value=Array("Week1","Week2","Week3","Week4","Week5","Week6","Week7 ")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54" ,"10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10" ,"10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36" ,"80")
objExcelSheet.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="기타"
objExcelSheet.Range("b2:k5").
다른 이름으로 저장 선택(strAddr&"TempExcel.xls")
objExcelApp.Quit
objExcelApp=아무것도 설정하지 않음
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<헤드>
<TITLE>새 문서</TITLE>
<METANAME="생성기"CONTENT=" MicrosoftFrontPage5.0">
<METANAME="저자"CONTENT="">
<METANAME="키워드"CONTENT="">
<METANAME="설명"CONTENT="">
</HEAD>
<본문>
</BODY>
</HTML>
엑셀 파일을 실행한 후 파일을 출력해야 하는데, 실제로 하려면 ASP의 엑셀로 리디렉션 방식을 사용하면 되는데, 때로는 IE에서 바로 열리기도 하고, 필요할 경우 "다운로드, 열기, 저장" 창이 뜨기도 합니다. IE에서 직접 열려면 FSO를 사용하여 Excel 파일을 로드한 다음 IE에서 출력하면 됩니다.
<%
Dim Fso,FileExt,strFilePath,Mime
strFilePath = "f:aspxuexi.doc"
Fso=Server.CreateObject("Scripting.FileSystemObject")를 설정합니다.
FileExt = Fso.GetExtensionName(strFilePath)
fso=Nothing으로 설정
Case FileExt 선택
사례 "문서"
Mime="응용 프로그램/msword"
케이스 "xls"
Mime="응용 프로그램/msexcel"
종료 선택
Call OutPut(strFilePath,Mime)
'################################## # #############
함수 OutPut(strFilePath,Mime)
Response.ContentType = 마임
상수 adTypeBinary = 1
objStream = Server.CreateObject("ADODB.Stream") 설정
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
응답.BinaryWrite objStream.Read
objStream.Close
objStream = 없음으로 설정
기능 종료
'########################################## ## ###
%>
실제 응용 분야에서. 서버가 Excel 또는 ACCESS 프로그램을 실행 중일 때 클라이언트는 Excel 작성을 제출합니다. 응용 프로그램 개체가 성공할 수 없습니다. 또 다른 상황에서는 클라이언트가 요청을 제출해도 종료되지 않고 다른 클라이언트가 제출한 요청이 성공할 수 없습니다. 이 문제에 대한 다른 해결책이 있을 수 있지만 적어도 이것은 불안정합니다.
우연히 우리 학과 인트라넷에 관련된 성공사례가 있었는데, 찾아보니 클라이언트에서 엑셀을 작성하고 있는 것이었습니다. 애플리케이션. 이렇게 하면 서버 측에서 더 이상 충돌이 발생하지 않습니다. 클라이언트의 경우 LAN에서 실행 중이므로 클라이언트 IE 보안 수준을 낮게 설정할 수 있으며 관련 활성(조사)은 설정이 없더라도 IE에서 "실행이 허용됩니까?"라는 경고 창이 나타납니다. activeX?"
구현된 코드는 이전 로그와 유사하며 간단히 다음과 같습니다.
<script 언어="vbscript">
set objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=true
objExcelApp.WorkBooks.Open(" http://XXX.XXX.XXX/XXX.xls ")
'전체 네트워크 주소의 xls 파일입니다. 이 파일은 형식화되어 인쇄되어 서버에 저장되었습니다.
objExcelBook=objExcelApp.ActiveWorkBook 설정
objExcelSheets=objExcelBook.Worksheets 설정
설정 objExcelSheet=objExcelBook.Sheets(1)
'====Excel 셀에 데이터를 채우는 명령문은 다음과 같습니다. 데이터베이스에서 데이터가 추출되면 ASP의 열은 다음과 같습니다.
'예: response.write "objExcelSheet.Range(""B2"").Value="""&rs("XXX")&""""
'또는 objExcelSheet.Range("B2").Value="<%=rs("XXX")%>"
objExcelSheet.Range("B2:k2").Value=Array("Week1","Week2"," 3주차","4주차","5주차","6주차","7주차")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54" ,"10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10" ,"10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36" ,"80")
objExcelSheet.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="기타"
'==================
'objExcelApp.Quit
'objExcelApp=아무것도 설정하지 마세요
</script>
위의 코드에서
'objExcelApp.Quit
'set objExcelApp=
여기서 excel.applicaition을 닫지 않기 때문에 취소로 사용되는 것은 없습니다. 그렇지 않으면 데이터가 채워진 후 Excel이 닫힙니다. 이때, 클라이언트에서 열린 엑셀 파일을 클라이언트에서 수정하거나 인쇄해야 합니다. 동시에 objexcelapp 개체에는 인쇄 설정 및 인쇄 미리보기 인터페이스에 들어가는 방법도 있습니다. 관련 Excel 관련 정보를 참조하세요.