이 기사의 주요 내용은 ASP를 사용하여 Excel 파일 예제를 출력하는 것입니다.
ASP에서 Excel을 사용하는 한 가지 방법은 Excel 파일을 데이터베이스로 연결하는 것입니다. 그러나 작업은 액세스 데이터베이스 작업과 유사하지만이 방법이 항상 유용하지 않으며 Excel이 관계형 데이터베이스가 아닙니다. 고정 된 형식의 경우이 형식에는 복잡한 셀 병합, 테두리 라인 스타일, 패턴, 셀 간의 공식 관계 등이 포함되어 있습니다. 가장 이해하기 쉬운 것은 백그라운드에서 기존 설정을 열면 필요한 곳에 데이터를 삽입하는 것입니다. , 저장, 출력 ...
여기에 언급 된 방법은 Excel 문서의 다양한 작업을 백그라운드에서보다 편리하게 수행 할 수있는 Excel 객체를 직접 작성하는 것입니다.
서버 측은 COM 구성 요소의 작동 권한을 설정해야합니다. 명령 줄에 dcomcnfg를 입력하고 Com 구성 요소 구성 인터페이스를 선택하고 세 가지 단일 옵션을 선택하여 모든 권한을 편집하는 동안 모든 권한을 선택하십시오. 저장 후 서버를 다시 시작하십시오.
설정하지 않으면 다른 컴퓨터는 Excel 객체 생성을 완료 할 수 없습니다.
그러나이 방법은 실제 작업에서 서버에 열린 Excel 파일이 있으면 오류가 발생합니다 제대로 설정되지 않았습니다.
또한 위에서 인용 한 기사의 예제 코드 형식은 그다지 완료되지 않았으며 코드가 복사되는 한 코드가 완료되면 많은 줄 브레이크 및 공간이 부정확 한 다음 천천히 실행될 수 있습니다. 연구하고 수정하면 시작하기가 쉽습니다. 이제 수정 된 코드는 다음과 같습니다 (차트가 그려진 부분은 삭제되었습니다).
프로그램 코드 :
- <%
- onerrorresumenext
- straddr = server.mappath (.)
- setobjexcelApp = createobject (Excel.application)
- objexcelapp.displayalerts = false
- objexcelapp.application.visible = false
- objexcelapp.workbooks.open (straddr &/templet/null.xls)
- setobjexcelbook = objexcelapp.activeworkbook
- setobjexcelsheets = objexcelbook.worksheets
- setobjexcelsheet = objexcelbook.sheets (1)
- objexcelsheet.range (B2 : K2) .Value = Array (Week1, Week2, Week4, Week5, Week6, Week7)
- objexcelsheet.range (b3 : k3) .Value = 배열 (67,87,5,9,45,45,54,54,10)
- objexcelsheet.range (b4 : k4) .Value = 배열 (10,10,8,27,33,37,50,54,10,10)
- objexcelsheet.range (b5 : k5) .Value = 배열 (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) .select
- Saveas (straddr &/temp/excel.xls)
- objexcelapp.quit
- setobjexcelapp = 아무것도 없습니다
- %>
- <! doctypehtmlpublic- // w3c // dtdhtml4.0transitional // en>
- <html>
- <헤드>
- <title> newDocument </title>
- <metaname = GeneratorContent = MicrosoftFrontPage5.0>
- <metaname = authorContent =>
- <metaname = keywordScontent =>
- <metaname = descriptionContent =>
- </head>
- <body>
- </body>
- </html>
Excel 파일을 작동하면 파일을 출력해야합니다. ASP의 리디렉션은 때로는 팝업 다운로드를 시작합니다 IE에서 직접 열려면 FSO와 함께 Excel 파일을로드 한 다음 IE에서 출력하지 마십시오.
프로그램 코드 :
- <%
- Dimfso, fileext, strfilepath, 마임
- strfilepath = f : /aspxuexi.doc
- setfso = server.createobject (scripting.filesystemobject)
- fileExt = fso.geteTextensionName (strfilepath)
- setfso = 아무것도
- selectCaseFileExt
- 케이스
- MIME = Application/Msword
- casexls
- MIME = Application/Msexcel
- EndSelect
- Calloutput (strfilepath, mime)
- '###########################################################################################################YOUMYD #####
- functionOutput (strfilepath, mime)
- 응답 .ContentType = MIME
- constadtypebinary = 1
- setobjstream = server.createobject (adodb.stream)
- objstream.open
- objstream.type = adtypebinary
- objstream.loadfromfilestfilepath
- 응답 .BinaryWriteObjStream.Read
- objstream.close
- setobjstream = 아무것도
- 최종 기능 장애
- '###########################################################################################################YOUMYD #####
- %>
실제 응용 프로그램에서 서버가 Excel 또는 Access 프로그램을 실행할 때 클라이언트는 Excel.application 객체의 설정을 성공하지 않고 제출합니다. 한 클라이언트가 요청을 제출하고 다른 클라이언트가 요청을 제출합니다. 요청은이 문제에 대한 다른 해결책이있을 수 없지만, 적어도 불안정합니다.
우리 부서의 내부 네트워크에 대한 성공적인 예가 있습니다 로컬 지역 네트워크에서 실행되는 클라이언트 IE 보안 수준은 낮게 설정하고 관련 ActiveX를 실행할 수 있습니다 (즉, IE 도구 옵션에서 허용하도록 모든 종류의 보안 관련 사항을 설정하고 특정 항목이 아닌 특정 항목 조사)).
구현 된 코드는 이전 로그와 유사하며 가장 간단한 코드는 다음과 같습니다.
프로그램 코드 :
- <scriptLanguage = vbscript>
- setobjexcelApp = createobject (Excel.application)
- objexcelapp.displayalerts = true
- objexcelapp.workbooks.open (http://xxx.xxx.xxx/xxx.xls)
- '완전한 네트워크 주소가있는 XLS 파일,이 파일은 서버에 서식 및 인쇄되었으며 저장되었습니다.
- setobjexcelbook = objexcelapp.activeworkbook
- setobjexcelsheets = objexcelbook.worksheets
- setobjexcelsheet = objexcelbook.sheets (1)
- '==== 데이터베이스에서 데이터가 추출되면이 진술은 백그라운드 프로그램에 의해 생성 될 수 있으며 ASP의 열에 표시됩니다.
- '예 : response.writeobjexcelsheet.range (b2) .value = & rs (xxx) &
- '또는 objexcelsheet.range (b2) .value = <%= rs (xxx)%>
- objexcelsheet.range (B2 : K2) .Value = Array (Week1, Week2, Week4, Week5, Week6, Week7)
- objexcelsheet.range (b3 : k3) .Value = 배열 (67,87,5,9,45,45,54,54,10)
- objexcelsheet.range (b4 : k4) .Value = 배열 (10,10,8,27,33,37,50,54,10,10)
- objexcelsheet.range (b5 : k5) .Value = 배열 (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
- 'setobjexcelapp = 아무것도
- </script>
위 코드에서
- 'objexcelapp.quit
- 'setobjexcelapp = 아무것도
취소는 Excel을 닫지 마십시오. 여기에서는 데이터가 채워진 후 Excel이 닫히게됩니다.
위는 ASP를 사용하여 Excel 파일을 출력하는 전체 프로세스입니다.