ASP 와 Excel 을 결합 하여 데이터 시트 와 Chart 그림 을 만 드 는 코드

디 렉 터 리 1,환경 설정 2,ASP 가 Excel 에 대한 기본 작업 3,ASP 작업 Excel 생 성 데이터 시트 4,ASP 작업 Excel 생 성 Chart 그림 5,서버 엔 드 Excel 파일 조회,다운로드,삭제 방안 6,부록 본문 1,환경 설정 서버 엔 드 의 환경 설정 은 참고 자료 에서 볼 수 있 습 니 다.마이크로소프트 시리즈 의 설정 은 모두 가능 할 것 이다.즉,1.Win9x+PWS+Office 2.Win 2000 Professional+PWS+Office 3.Win 2000 Server+IIS+Office 현재 필자 가 테스트 에 성공 한 환경 은 후자 이다.Office 버 전 은 특별한 요구 가 없습니다.클 라 이언 트 설정 의 불확실 성과 하 호 환 특성 을 고려 하여 서버 쪽 Office 버 전이 너무 높 지 않 고 클 라 이언 트 가 다운로드 한 후에 정확하게 표시 되 지 않도록 하 는 것 을 권장 합 니 다.서버 측 환경 설정 은 두 가지 우연 한 발견 이 있 습 니 다.1.필자 가 기계 에 원래 금 산 이 설치 되 어 있 던 WPS 2002 를 개발 한 결과 엑셀 대상 의 생 성 에 문제 가 생 겼 고 WPS 2002 를 마 운 트 해제 한 후에 오류 가 사 라 졌 습 니 다.2.필자 가 ASP 코드 를 개발 할 때 FrontPage 를 즐겨 사용 한 결과 FrontPage 가 열 리 면 대상 생 성 이 불안정 하고 때로는 성공 하고 때로는 성공 하지 못 하 는 것 을 발견 했다.확장 고찰 결과,Office 시리즈 의 소프트웨어 가 서버 에서 실행 되면 Excel 대상 의 생 성 이 성공 하기 어렵 다 는 것 을 발견 하 였 다.서버 쪽 에서 설정 해 야 할 점 은 COM 구성 요소 의 조작 권한 입 니 다.명령 행 에"DCOMCNFG"를 입력 하면 COM 구성 요소 설정 인터페이스 에 들 어가 Microsoft Excel 을 선택 한 후 속성 단 추 를 누 르 면 세 개의 단일 옵션 을 모두 사용자 정의 로 선택 하고 편집 에 Everyone 을 모든 권한 에 추가 합 니 다.저장 이 끝 난 후 서버 를 다시 시작 합 니 다.클 라 이언 트 의 환경 설정 은 특별히 신경 쓰 는 부분 을 발견 하지 못 했 습 니 다.Office 와 IE 만 설치 하면 됩 니 다.버 전 은 통용 되 는 것 같 습 니 다.2.ASP 가 Excel 에 대한 기본 동작 1.Excel 대상 set obj ExcelApp=CreateObject("Excel.Application")obj ExcelApp.DisplayAlerts=false 경고 obj ExcelApp.Application.Visible=false 는 인터페이스 2 를 표시 하지 않 습 니 다.새 Excel 파일 obj ExcelApp.WorkBooks.add set obj ExcelBook=obj ExcelApp.ActiveWorkBook set obj ExcelSheets=obj ExcelBook.Worksheets set obj ExcelSheet=obj ExcelBook.Sheets(1)3,기 존 Excel 파일 strAddr=Server.MapPath(".")obj Excel App.WorkBooks.Open(strAddr&"\Templet\Table.xls")set obj Excel Book=obj Excel App.ActiveWorkBook set obj Excel Sheets=obj Excel Book.Worksheets set obj Excel Sheet=obj Excel Book.Sheets(1)4,Excel 파일 obj Excel Book.SaveAs strAddr&"\Temp\Table.xls"5,엑셀 파일 obj Excelbook.save 저장(필자 가 테스트 할 때 저장 에 성 공 했 고 페이지 가 잘못 되 었 습 니 다.)6.엑셀 작업 objectExcelApp.Quit 를 종료 하려 면 set objectExcelApp=Nothing 3,ASP 작업 Excel 생 성 데이터 시트 1,한 범위 내 에 데이터 object ExcelSheet.Range("B3:k3")를 삽입 해 야 합 니 다.Value=Array("67","87","5","9","7","45","54","54","10")2.한 칸 에 데이터 objectExcelSheet.Cells(3,1).Value="Internet Explorer"3,셀 텍스트 색상 변경 obj ExcelSheet.Cells(3,1).Font.Color=vbred 4,단원 격 4 주 라인 obj ExcelSheet.Cells(3.1).Orders(1).LineStyle=1 obj ExcelSheet.Cells(3.1).Orders(2).LineStyle=1 obj ExcelSheet.Cells(3.1).Orders(3).LineStyle=1 obj ExcelSheet.Cells(3.1).Orders(4).LineStyle=1 구역 중간 라인 obj ExcelSheet.Range("A1:G7").Orders(7).LineStyle=1 obj ExcelSheet.Range("A1:G7").Orders(8)..LineStyle=18,셀 설정 배경 색 objectExcelSheet.Cells(3.1).Interior.colorindex=17 9,병합 셀 objectExcelSheet.Range("A1:G7").Merge 10,설정 좌우 정렬 방식 2 left 3 middle 4 right objectExcelSheet.Range("A1").HorizontalAlignment=2 11,상하 정렬 방식 설정 2 는 가운데 object ExcelSheet.Range("A1")입 니 다.Vertical Alignment=2,4,ASP 작업 Excel 생 성 Chart 그림 1,Chart 그림 object ExcelApp.Charts.Add 2 만 들 기,Chart 그림 종류 설정 object ExcelApp.Active Chart.Chart Type=97 주:2 차원 접선 그림,4;2 차원 떡 그림,5;2 차원 기둥 그림,51 3,설정 차 트 아이콘 문제 objectExcelApp.ActiveChart.HasTitle=True objectExcelApp.ActiveChart.ChartTitle.Text="A test Chart"4,표 데 이 터 를 통 해 도형 objectExcelApp.ActiveChart.SetSourceData objectExcelSheet.Range("A1:k5"),15,그래 픽 데이터 직접 설정(추천)objectExcelApp.ActiveChart.SeriesCollection.NewSeries objectExcelApp.ActiveChart.SeriesCollection(1).Name="="333""objectExcelApp.ActiveChart.SeriesCollection(1).Values="="6,귀속 차 트 맵 objectExcelApp.ActiveChart.Location 1 7,데이터 시트 표시 objectExcelApp.ActiveChart.HasDataTable=True 8,디 스 플레이 그림 objectExcelApp.ActiveChart.DataTable.Show LegendKey=True 5,서버 쪽 Excel 파일 탐색,다운로드,삭제 방안 탐색 의 해결 방법 이 많 습 니 다.'Location.href=','Navigate','Response.Redirect'가 모두 가능 합 니 다.서버 에 Excel 파일 을 만 드 는 데 더 많은 시간 을 주기 때 문 입 니 다.다운로드 의 실현 은 좀 번 거 로 워 야 한다.인터넷 에 이미 만들어 진 서버 에서 구성 요 소 를 다운로드 하거나 스스로 구성 요 소 를 맞 춤 형 으로 개발 하 는 것 이 좋 은 방안 이다.또 다른 방법 은 클 라 이언 트 에서 엑셀 구성 요 소 를 조작 하고 클 라 이언 트 가 서버 쪽 엑셀 파일 을 클 라 이언 트 에 따로 저장 하 는 것 이다.이러한 방법 은 클 라 이언 트 에 게 안전 하지 않 은 ActiveX 컨트롤 의 조작 권한 을 개방 하도록 요구 합 니 다.모든 클 라 이언 트 에 게 서버 를 신뢰 할 수 있 는 사이트 로 설정 하 는 것 을 알 리 는 번 거 로 운 정 도 를 고려 하여 첫 번 째 방법 으로 하 는 것 이 좋 습 니 다.삭제 방안 은 세 부분 으로 구성 되 어 있 습 니 다.A:같은 사용자 가 생 성 한 Excel 파일 은 같은 파일 이름 으로,파일 이름 은 사용자 ID 번호 나 SessionID 번호 등 중복 되 지 않 는 문자열 로 구 성 될 수 있 습 니 다.새 파일 이 생 성 될 때 자동 으로 파일 을 덮어 씁 니 다.B:Global.asa 파일 에 Session 설정onEnd 이벤트 가 자극 되 었 을 때 이 사용자 의 Excel 임시 저장 파일 을 삭제 합 니 다.C:Global.asa 파일 에 Application 설정onStart 이벤트 가 자극 되 었 을 때 임시 저장 디 렉 터 리 에 있 는 모든 파일 을 삭제 합 니 다.주:디 렉 터 리 구조\Src 코드 디 렉 터 리\Templet 템 플 릿 디 렉 터 리\Temp 임시 저장 디 렉 터 리 6,부록 오류 시 Excel 에 나타 나 는 데 드 프로 세 스 가 나타 나 는 것 은 골 치 아 픈 일 입 니 다.모든 파일 앞 에'On Error Resume Next'를 추가 하면 이러한 상황 을 개선 하 는 데 도움 이 될 것 입 니 다.파일 에 오류 가 발생 하 든 안 발생 하 든'application.Quit'까지 계속 실행 하여 프로그램 이 실 행 될 때마다 죽은 프로 세 스 를 남기 지 않도록 하기 때 문 입 니 다.보충 두 가지:1.다른 엑셀 의 구체 적 인 조작 은 녹음 매크로 를 통 해 해결 할 수 있다.2.서버 에서 SQL 기업 관리 자 를 켜 도 문제 가 생 길 수 있 습 니 다
 
<%
OnErrorResumeNextstrAddr=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","Week3","Week4","Week5","Week6","Week7",
"Week8","Week9","Week10")
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="Other"objExcelSheet.Range("b2:k5").Select

objExcelApp.Charts.Add
objExcelApp.ActiveChart.ChartType=97
objExcelApp.ActiveChart.BarShape=3
objExcelApp.ActiveChart.HasTitle=True
objExcelApp.ActiveChart.ChartTitle.Text=
"Visitorslogforeachweekshowninbrowserspercentage"
objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.Range("A1:k5"),1
objExcelApp.ActiveChart.Location1
'objExcelApp.ActiveChart.HasDataTable=True
'objExcelApp.ActiveChart.DataTable.ShowLegendKey=TrueobjExcelBook.
SaveAsstrAddr&"\Temp\Excel.xls"objExcelApp.Quit
setobjExcelApp=Nothing
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>NewDocument</TITLE>
<METANAME="Generator"CONTENT="MicrosoftFrontPage5.0">
<METANAME="Author"CONTENT="">
<METANAME="Keywords"CONTENT="">
<METANAME="Description"CONTENT="">
</HEAD>
<BODY>
</BODY>
</HTML>

좋은 웹페이지 즐겨찾기