Eine Möglichkeit, Excel in ASP zu verwenden, besteht darin, die Excel-Datei als Datenbank zu verknüpfen. Der Vorgang ähnelt dann dem Vorgang zum Zugriff auf die Datenbank. Allerdings ist diese Methode nicht immer sinnvoll, da Excel keine relationale Datenbank ist. Für ein festes Format, das komplexe Zellzusammenführungen, Grenzlinienstile, Muster, Formelbeziehungen zwischen Zellen usw. aufweist, ist es meiner Meinung nach am einfachsten zu verstehen, eine vorhandene Einstellung im Hintergrund zu öffnen, eine Vorlagendatei zu erstellen und dann Daten dort einzufügen benötigt, speichern und ausgeben ...
Die hier erwähnte Methode besteht darin, direkt ein Excel-Objekt zu erstellen, wodurch es einfacher wird, verschiedene Vorgänge am Excel-Dokument im Hintergrund auszuführen.
Eine weitere Sache, die serverseitig festgelegt werden muss, ist die Betriebsberechtigung der COM-Komponente. Geben Sie „DCOMCNFG“ in die Befehlszeile ein, um die COM-Komponenten-Konfigurationsoberfläche aufzurufen, und klicken Sie auf die Schaltfläche „Benutzerdefiniert“ für alle drei Optionsfelder. Fügen Sie „Jeder“ zu allen Berechtigungen hinzu. Starten Sie nach dem Speichern den Server neu.
Es ist sehr wichtig, dass andere Computer die Erstellung von Excel-Objekten nicht abschließen können.
Diese Methode hat jedoch auch einen Nachteil: Wenn auf dem Server bereits eine Excel-Datei geöffnet ist und ich dann dieselbe Datei ausführe, verstehe ich immer noch nicht, warum Orte, die nicht eingerichtet wurden.
Darüber hinaus ist das Beispielcodeformat im oben genannten Artikel nicht vollständig und viele der Zeilenumbrüche und Leerzeichen haben kein genaues Format. Wenn der Code vollständig ist, kopieren Sie ihn einfach und er wird erfolgreich ausgeführt, und recherchieren Sie dann langsam und ändern Sie es, und der Einstieg ist einfach. Der geänderte Code lautet nun wie folgt (der Teil, der das Diagramm zeichnet, wurde gelöscht):
<%
Bei Fehler Weiter fortsetzen
strAddr=Server.MapPath(".")
set objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=false
objExcelApp.Application.Visible=false
objExcelApp.WorkBooks.Open(strAddr&"TempletNull.xls")
set objExcelBook=objExcelApp.ActiveWorkBook
set objExcelSheets=objExcelBook.Worksheets
set objExcelSheet=objExcelBook.Sheets(1)
objExcelSheet.Range("B2:k2").Value=Array("Woche1", "Woche2", "Woche3", "Woche4", "Woche5", "Woche6", "Woche7". ")
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="Andere"
objExcelSheet.Range("b2:k5").Select
SaveAs(strAddr&"TempExcel.xls")
objExcelApp.Quit
set objExcelApp=Nichts
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<KOPF>
<TITLE>NeuesDokument</TITLE>
<METANAME="Generator"CONTENT="MicrosoftFrontPage5.0">
<METANAME="Autor"CONTENT="">
<METANAME="Schlüsselwörter"CONTENT="">
<METANAME="Beschreibung"CONTENT="">
</HEAD>
<KÖRPER>
</BODY>
</HTML>
Nachdem Sie die Excel-Datei bearbeitet haben, müssen Sie die Datei mit der Umleitungsmethode von ASP direkt im IE ausgeben, und manchmal wird bei Bedarf das Fenster „Herunterladen, Öffnen, Speichern“ angezeigt Um es direkt im IE zu öffnen, laden Sie einfach die Excel-Datei mit FSO und geben Sie sie dann im IE aus.
<%
Dim Fso,FileExt,strFilePath,Mime
strFilePath = "f:aspxuexi.doc"
Setze Fso=Server.CreateObject("Scripting.FileSystemObject")
FileExt = Fso.GetExtensionName(strFilePath)
Legen Sie fso=Nothing fest.
Wählen Sie Case FileExt aus
Fall „doc“
Mime="Application/msword"
Koffer „xls“
Mime="Application/msexcel"
Ende auswählen
Call OutPut(strFilePath,Mime)
'##################################### # #############
Funktion OutPut(strFilePath,Mime)
Response.ContentType = Mime
Const adTypeBinary = 1
Setze objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Setze objStream = Nothing
Funktion beenden
'############################################# ###
%>
in praktischen Anwendungen. Wenn der Server das Excel- oder ACCESS-Programm ausführt, übermittelt der Client die Erstellung von Excel. Das Anwendungsobjekt kann nicht erfolgreich ausgeführt werden. In einer anderen Situation, wenn ein Client eine Anfrage sendet, wird diese nicht beendet und die von einem anderen Client gesendete Anfrage kann nicht erfolgreich sein! Möglicherweise gibt es andere Lösungen für dieses Problem, aber zumindest ist diese instabil.
Zufällig gab es im Intranet unserer Abteilung entsprechende Erfolgsbeispiele. Als ich sie heraussuchte, fand ich heraus, dass sie Excel auf dem Client erstellten. Anwendung. Auf diese Weise kommt es auf der Serverseite nicht mehr zu Konflikten. Da der Client im LAN ausgeführt wird, kann die IE-Sicherheitsstufe des Clients niedrig eingestellt und die entsprechende Aktivität aktiviert werden (Untersuchung). Auch wenn keine Einstellung vorhanden ist, öffnet der IE ein Warnfenster: „Dürfen Sie ausführen?“ activeX?"
Der implementierte Code ähnelt dem vorherigen Protokoll und lautet einfach wie folgt:
<script language="vbscript">
set objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=true
objExcelApp.WorkBooks.Open(" http://XXX.XXX.XXX/XXX.xls ")
'Die XLS-Datei der vollständigen Netzwerkadresse wurde formatiert und gedruckt und auf dem Server gespeichert.
set objExcelBook=objExcelApp.ActiveWorkBook
set objExcelSheets=objExcelBook.Worksheets
set objExcelSheet=objExcelBook.Sheets(1)
'====Hier sind die Anweisungen zum Ausfüllen von Daten in Excel-Zellen. Wenn Daten aus der Datenbank extrahiert werden, können diese Anweisungen vom Hintergrundprogramm generiert werden. Die Spalten in ASP sind:
'Zum Beispiel: Response.write "objExcelSheet.Range(""B2"").Value="""&rs("XXX")&""""
'oder objExcelSheet.Range("B2").Value="<%=rs("XXX")%>"
objExcelSheet.Range("B2:k2").Value=Array("Week1","Week2"," Woche3“, „Woche4“, „Woche5“, „Woche6“, „Woche7“)
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="Andere"
'==================
'objExcelApp.Quit
'set objExcelApp=Nothing
</script>
Im obigen Code
'objExcelApp.Quit
'set objExcelApp=Nichts
wird als Abbruch verwendet, da excel.aplicaition hier nicht geschlossen wird, andernfalls wird Excel geschlossen, nachdem die Daten ausgefüllt wurden. Zu diesem Zeitpunkt muss die auf dem Client geöffnete Excel-Datei vom Client geändert oder gedruckt werden. Gleichzeitig verfügt das objexcelapp-Objekt auch über Methoden zum Drucken von Einstellungen und zum Aufrufen der Druckvorschau-Schnittstelle. Bitte beachten Sie die relevanten Excel-bezogenen Informationen.