1. 소개 보고서 인쇄는 일반적으로 경영정보 시스템에서 중요한 모듈이며 Excel은 강력한 기능, 유연한 적용 및 강력한 다양성으로 인해 보고서 인쇄에 널리 사용되었습니다.
초기의 경영정보시스템은 기본적으로 클라이언트/서버(C/S) 모델을 이용하여 개발되었으나, WWW의 확산으로 현재의 경영정보시스템은 점차 C/S 모델에서 브라우저/서버로 전환되기 시작하였다. (B/S) 모드 변경. B/S 모드에는 기존 C/S 모드와 비교할 수 없는 많은 기능이 있습니다. 예를 들어 더 개방적이고, 소프트웨어 및 하드웨어에 독립적이며, 애플리케이션 확장과 시스템 유지 관리 및 업그레이드에 편리합니다. 이제 선호되는 컴퓨팅 모드가 되었습니다. 기업 네트워크용으로 원래 C/S에서 사용되었습니다. 인터넷의 많은 소프트웨어가 B/S 모드로 이식되기 시작했습니다. B/S 모드의 특수성으로 인해 C/S에서는 비교적 구현하기 쉬운 엑셀 보고서 인쇄 기능이 B/S에서는 어렵게 되었습니다. 이 기사에서는 실제 프로젝트에서 요약된 경험을 바탕으로 ASP를 예로 들어 더 나은 일반적인 방법을 제공합니다.
2. 기능 구현 문제를 설명하기 위해 여기에 예가 있습니다. 시스템 플랫폼은 Windows 2000+SQL Server 2000+IIS 5.0+ASP 3. 보고서는 엑셀을 사용하며, 지정된 보고서 형식에 따라 도서 판매 통계 보고서를 생성하고 인쇄할 수 있어야 합니다.
2.1 엑셀 보고서 템플릿 제작 먼저 주어진 보고서 형식에 맞게 엑셀 템플릿(즉, 인쇄할 보고서의 형태)을 만듭니다. 물론, 데이터베이스의 동적 통계로부터 생성된 데이터는 비워두어야 합니다. 이 보고서는 먼저 Excel에서 작성된 다음 템플릿으로 저장되고 여기에 testbook1.xlt로 저장됩니다.
2.2 Excel 보고서 생성 및 인쇄 여기에서는 Excel을 설치할 때 시스템에 설치되는 Excel의 응용 프로그램 구성 요소가 사용됩니다. 우리의 운영도 이 구성요소를 목표로 하고 있습니다.
(1) Excel.Application 객체 생성
set objExcel=CreateObject("Excel.Application")
(2) 엑셀 템플릿을 엽니다
objExcel.Workbooks.Open(server.mappath("test")&"book1.xlt") 'Excel 템플릿 열기
objExcel.Sheets(1).select '작품 페이지 선택
sheetActive=objExcel.ActiveWorkbook.ActiveSheet를 설정합니다.
(3) sheetActive.range("g4").value=date() '여기에 추가되는 것은 시간입니다. 물론 사용자가 지정하는 모든 데이터일 수도 있습니다.
(4) Excel의 데이터베이스에 레코드를 추가합니다. SQL 작업으로 생성된 통계 데이터를 저장하는 adoRset 데이터 세트가 이미 있다고 가정합니다.
num=7 '엑셀 7번째 행부터 시작
adoRset.EOF까지 수행 '데이터 세트의 데이터가 기록될 때까지 반복
strRange="d"&num&":f"&num '내용을 채울 단위 면적을 설정합니다
sheetActive.range(strRange).font.size=10 '글꼴 크기 설정
sheetActive.range(strRange).WrapText=false '텍스트 줄 바꿈 설정
sheetActive.range(strRange).ShrinkToFit=true '테이블 단위 크기에 자동으로 적응할지 설정
sheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) '데이터 세트의 데이터를 해당 단위에 입력합니다.
숫자=숫자+1
adoRset.MoveNext
고리
(5) 엑셀 임시 보고서 파일의 저장 및 처리 실제 작업에서는 사용자가 보고서를 인쇄할 때마다 파일 이름을 고정적으로 지정하는 대신 임시 엑셀 파일을 사용한다는 점에 유의해야 합니다. 첫 번째만 사용됩니다. 생성이 성공하면 동일한 이름의 파일이 이미 존재하므로 후속 작업은 실패합니다. 따라서 매번 임시적이고 반복되지 않는 파일 이름을 생성해야 합니다. 여기서는 사용자 정의 getTemporaryFile() 함수를 사용하여 이를 생성한 다음 이를 filename 변수에 저장하고 filepos 변수를 사용하여 이러한 경로를 나타낼 수 있습니다. 임시 파일.
또한 이러한 임시 파일이 처리되지 않으면 시간이 지남에 따라 파일 쓰레기가 됩니다. 따라서 각 사용자가 Excel 보고서 인쇄 요청을 제출하면 임시 디렉터리에 이전에 생성된 모든 임시 인쇄 파일을 먼저 삭제해야 합니다.
임시 파일을 처리하는 주요 코드는 다음과 같습니다.
함수 getTemporaryFile(myFileSystem)
Dimtemp파일,dotPos
tempFile=myFileSystem.getTempName
dotPos=instr(1,tempFile,".")
getTemporaryFile=mid(tempFile,1,dotPos)&"xls"
함수 종료
myFs=createObject("scripting.FileSystemObject")를 설정하십시오.
filePos=server.mappath("test") & "tmp" '임시 인쇄 파일을 저장할 임시 디렉터리
fileName=getTemporaryFile(myFs) '임시 파일 이름 가져오기
myFs.DeleteFile filePos&"*.xls" '이 디렉터리에 원래 생성된 모든 임시 인쇄 파일을 삭제합니다.
myFs=아무것도 설정하지 않음
Excel 임시 파일 저장 코드는 다음과 같습니다.
objExcel.ActiveWorkbook.파일 위치로 저장(&파일 이름)
(6) 엑셀 애플리케이션 종료
objExcel.quit
objExcel=아무것도 설정하지 않음
(7) Excel 보고서 인쇄 이전 단계에서는 Excel 보고서가 생성되었습니다. 다음 단계에서 인쇄하려면 다음 두 가지 전략이 있습니다.
옵션 1: 위에서 생성된 Excel 보고서의 임시 파일에 대한 링크를 사용자에게 제공합니다. 사용자가 직접 클릭하여 브라우저에서 Excel 보고서를 열고 브라우저의 인쇄 기능을 통해 인쇄할 수도 있습니다. 인쇄 등을 위해 로컬에서 처리합니다.
옵션 2: Excel 보고서를 생성한 후 클라이언트측 브라우저에 직접 로드합니다. 물론 완전히 로드되지 않은 경우 "로드 중입니다. 잠시 기다려 주십시오."라는 메시지가 표시되어야 합니다.
2.3 시스템 구성 및 주의사항 위의 코드는 매우 간단하지만 실제로 제대로 사용하지 않으면 오류가 발생하는 경우가 많기 때문에 아래에서 언급하는 시스템 구성 및 주의사항은 매우 중요합니다.
(1) 위 코드 입력의 정확성을 확인하십시오. 그렇지 않으면 작업 오류가 발생하면 Excel 개체가 메모리에 남아 제거하기 어려워 다음 호출이 매우 느려지고 Windows 오류가 발생합니다. 메모리를 읽거나 쓸 수 없다는 것입니다. 이때 해결 방법은 현재 사용자에서 로그아웃하는 것입니다. 그래도 작동하지 않으면 재설정만 할 수 있습니다.
(2) 인쇄 기능을 담당하는 asp 파일에 대한 권한을 반드시 설정해 주세요. 방법은 다음과 같습니다. IIS 관리에서 asp 파일을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 "속성"/"파일 보안"/"익명 액세스 및 인증 제어"를 선택합니다. 여기서 IIS는 기본적으로 익명 액세스를 선택하고 인증된 액세스()를 선택해야 합니다. 기본 인증은 다음과 같습니다. 두 방법 모두 Windows 통합 인증을 사용할 수 있지만 전자는 충분히 안전하지 않습니다. 이는 매우 중요합니다. 그렇지 않으면 응용 프로그램에서 오류가 발생합니다.
(3) 보고서가 여러 페이지로 나누어져 있는 경우 각 페이지에 동일한 헤더가 있어야 하는 경우가 있는데, Excel 템플릿에서 설정할 수 있는 헤더가 각 페이지에 자동으로 인쇄되도록 해야 합니다. 방법은 다음과 같습니다. 메뉴 "파일"/"페이지 설정"/"워크시트"를 선택한 다음 "상단 제목 행"에 머리글 행 수를 입력합니다(예: 머리글이 1~1행인 경우). 3, 다음을 입력하세요: $1:$3 ).
3. 요약하면 ASP로 작성된 B/S 모드에서 EXCEL 보고서를 생성하고 인쇄하는 예가 제시되었으며 이는 실제로 잘 적용되었습니다. 이 예제의 코드는 작성하기 어렵지 않지만 시스템 구성에 주의를 기울여야 한다는 사실도 입증되었습니다. 이는 수많은 실패를 겪으면서 얻은 경험이기도 합니다.