1. Einleitung Das Drucken von Berichten ist normalerweise ein wichtiges Modul im Managementinformationssystem. Excel wird aufgrund seiner leistungsstarken Funktionen, seiner flexiblen Anwendung und seiner großen Vielseitigkeit häufig zum Drucken von Berichten verwendet.
Das anfängliche Managementinformationssystem wurde im Wesentlichen unter Verwendung des Client/Server-Modells (C/S) entwickelt. Mit der weit verbreiteten Anwendung von WWW hat sich das aktuelle Managementinformationssystem jedoch allmählich vom C/S-Modell zum Browser/Server verlagert (B/S) Moduswechsel. Der B/S-Modus verfügt über viele Funktionen, mit denen der herkömmliche C/S-Modus nicht mithalten kann, z. B. ist er offener, unabhängig von Software und Hardware, praktisch für Anwendungserweiterungen sowie Systemwartung und -aktualisierungen usw. Er ist mittlerweile zum bevorzugten Computermodus geworden Für Unternehmensnetzwerke wurde es ursprünglich im C/S-Modus verwendet. Viele Softwareprogramme im Internet wurden mittlerweile in den B/S-Modus verlagert. Aufgrund der Besonderheit des B/S-Modus ist die unter C/S relativ einfach zu implementierende Funktion zum Drucken von Excel-Berichten unter B/S zu einer Schwierigkeit geworden. Dieser Artikel bietet eine bessere allgemeine Methode, die auf den in tatsächlichen Projekten zusammengefassten Erfahrungen am Beispiel von ASP basiert.
2. Funktionsimplementierung Um das Problem zu verdeutlichen, hier ein Beispiel. Die Systemplattform ist Windows 2000+SQL Server 2000+IIS 5.0+ASP 3. Der Bericht verwendet Excel. Er ist erforderlich, um einen Bericht über Buchverkaufsstatistiken gemäß dem angegebenen Berichtsformat zu erstellen und ihn ausdrucken zu können.
2.1 Erstellen einer Excel-Berichtsvorlage Erstellen Sie zunächst eine Excel-Vorlage (d. h. die Form des zu druckenden Berichts) entsprechend dem vorgegebenen Berichtsformat. Natürlich sollten die aus dynamischen Statistiken in der Datenbank generierten Daten leer bleiben. Dieser Bericht wird zunächst in Excel gezeichnet, dann als Vorlage gespeichert und hier abgelegt, hier als testbook1.xlt.
2.2 Generierung und Druck von Excel-Berichten Hier wird die Anwendungskomponente von Excel verwendet, die bei der Installation von Excel im System installiert wird. Unsere Aktivitäten sind auch auf diese Komponente ausgerichtet.
(1) Erstellen Sie ein Excel.Application-Objekt
set objExcel=CreateObject("Excel.Application")
(2) Öffnen Sie die Excel-Vorlage
objExcel.Workbooks.Open(server.mappath("test")&"book1.xlt") 'Excel-Vorlage öffnen
objExcel.Sheets(1).select 'Wählen Sie die Arbeitsseite aus
set sheetActive=objExcel.ActiveWorkbook.ActiveSheet
(3) Die regulären Additionsoperationen von Excel wie sheetActive.range("g4").value=date() 'Was hier hinzugefügt wird, ist Zeit, es können natürlich auch beliebige Daten sein, die Sie angeben.
(4) Fügen Sie Datensätze zur Datenbank in Excel hinzu. Es wird davon ausgegangen, dass bereits ein Datensatz adoRset vorhanden ist, der durch SQL-Operationen generierte statistische Daten speichert.
num=7 'Beginnen Sie mit der siebten Zeile von Excel
do Until adoRset.EOF 'Schleife, bis die Daten im Datensatz geschrieben sind
strRange="d"&num&":f"&num 'Legen Sie den Einheitenbereich fest, um den Inhalt auszufüllen
sheetActive.range(strRange).font.size=10 'Schriftgröße festlegen
sheetActive.range(strRange).WrapText=false 'Textumbruch festlegen
sheetActive.range(strRange).ShrinkToFit=true 'Legen Sie fest, ob eine automatische Anpassung an die Größe der Tischeinheit erfolgen soll
sheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) 'Füllen Sie die Daten im Datensatz in die entsprechende Einheit ein
Anzahl=Anzahl+1
adoRset.MoveNext
Schleife
(5) Speicherung und Verarbeitung von temporären Excel-Berichtsdateien. Im tatsächlichen Betrieb ist zu beachten, dass bei jedem Ausdruck eines Berichts eine temporäre Excel-Datei verwendet wird, anstatt den Dateinamen starr anzugeben, da dies bei einem festen Dateinamen der Fall ist Wird nur die erste verwendet. Sobald die Generierung erfolgreich ist, schlagen nachfolgende Vorgänge fehl, da bereits eine Datei mit demselben Namen vorhanden ist. Daher müssen wir jedes Mal einen temporären und sich nicht wiederholenden Dateinamen generieren. Hier können wir ihn mit der benutzerdefinierten Funktion getTemporaryFile() generieren, ihn dann in der Variablen filename speichern und die Pfade dieser Dateien mithilfe der Variablen filepos darstellen temporäre Dateien.
Wenn diese temporären Dateien nicht verarbeitet werden, werden sie außerdem mit der Zeit zu Dateimüll. Wenn jeder Benutzer eine Excel-Berichtsdruckanforderung sendet, müssen daher zuerst alle zuvor generierten temporären Druckdateien im temporären Verzeichnis gelöscht werden.
Der Hauptcode für die Verarbeitung temporärer Dateien lautet wie folgt:
Funktion getTemporaryFile(myFileSystem)
dimtempFile,dotPos
tempFile=myFileSystem.getTempName
dotPos=instr(1,tempFile,".")
getTemporaryFile=mid(tempFile,1,dotPos)&"xls"
Endfunktion
set myFs=createObject("scripting.FileSystemObject")
filePos=server.mappath("test") & "tmp" 'Temporäres Verzeichnis zum Speichern temporärer Druckdateien
fileName=getTemporaryFile(myFs) 'Erhalten Sie einen temporären Dateinamen
myFs.DeleteFile filePos&"*.xls" 'Alle temporären Druckdateien löschen, die ursprünglich in diesem Verzeichnis erstellt wurden
setze myFs=nichts
Der Speichercode für temporäre Excel-Dateien lautet:
objExcel.ActiveWorkbook.saveas filePos&filename
(6) Beenden Sie die Excel-Anwendung
objExcel.quit
set objExcel=Nichts
(7) Drucken des Excel-Berichts Die vorherigen Schritte haben den Excel-Bericht generiert. Für das Drucken im nächsten Schritt gibt es zwei Strategien:
Option 1: Stellen Sie dem Benutzer den Link zur temporären Datei des oben generierten Excel-Berichts zur Verfügung. Der Benutzer kann den Excel-Bericht direkt im Browser öffnen und über die Druckfunktion des Browsers ausdrucken es lokal zum Ausdrucken etc. erledigen.
Option 2: Nachdem Sie den Excel-Bericht erstellt haben, laden Sie ihn direkt in den Browser auf der Clientseite. Wenn er nicht vollständig geladen ist, sollte er natürlich die Aufforderung „Laden, bitte warten“ usw. erhalten.
2.3 Systemkonfiguration und Vorsichtsmaßnahmen Obwohl der obige Code sehr einfach ist, treten bei unsachgemäßer Anwendung in der Praxis häufig Fehler auf. Daher sind die unten aufgeführten Systemkonfigurationen und Vorsichtsmaßnahmen sehr wichtig.
(1) Stellen Sie sicher, dass die obige Codeeingabe korrekt ist. Andernfalls verbleibt das Excel-Objekt im Speicher und kann nur schwer entfernt werden, wenn der Betriebsfehler auftritt, was dazu führt, dass der nächste Aufruf extrem langsam ist und einen Windows-Fehler generiert dass der Speicher weder gelesen noch beschrieben werden kann. Die Lösung besteht zu diesem Zeitpunkt darin, sich vom aktuellen Benutzer abzumelden. Wenn das nicht funktioniert, können Sie nur zurücksetzen.
(2) Stellen Sie sicher, dass Sie die Berechtigungen der ASP-Datei festlegen, die für die Druckfunktion verantwortlich ist. Die Methode ist: Wählen Sie in der IIS-Verwaltung die ASP-Datei aus, klicken Sie mit der rechten Maustaste und wählen Sie „Eigenschaften“/„Dateisicherheit“/„Anonymer Zugriff und Authentifizierungssteuerung“. Hier ist IIS standardmäßig auf anonymen Zugriff eingestellt, und Sie sollten authentifizierten Zugriff auswählen ( Hier ist die Basisauthentifizierung möglich. Beide Methoden können verwendet und die Windows-Authentifizierung integriert werden, erstere ist jedoch nicht sicher genug. Dies ist äußerst wichtig, da es sonst zu Fehlern in der Anwendung kommt.
(3) Manchmal ist der Bericht in mehrere Seiten unterteilt und wir möchten, dass jede Seite die gleiche Kopfzeile hat. Wir verlangen, dass die Kopfzeile automatisch auf jeder Seite gedruckt wird, was in der Excel-Vorlage festgelegt werden kann. Die Methode ist wie folgt: Wählen Sie das Menü „Datei“/„Seite einrichten“/„Arbeitsblatt“ und geben Sie dann die Anzahl der Zeilen in Ihrer Kopfzeile in der „Obersten Titelzeile“ ein (z. B. wenn die Kopfzeile aus den Zeilen 1–1 besteht). 3, füllen Sie aus: $1:$3 ).
3. Zusammenfassend haben wir ein in ASP geschriebenes Beispiel für das Erstellen und Drucken von Excel-Berichten im B/S-Modus gegeben, das in der Praxis gut angewendet wurde. Fakten haben auch gezeigt, dass der Code dieses Beispiels zwar nicht schwer zu schreiben ist, Sie jedoch auf die Systemkonfiguration achten müssen. Dies ist auch die Erfahrung, die nach unzähligen Fehlern gesammelt wurde.