SA ExcelWriter in Action
Geschrieben von: Christian Holm Nach der kurzen Vorstellung der Software Artisans ExcelWriter Komponete im Artikel Die SA Excel Writer Komponente, kann die Komponente nun zeigen was sie kann. Anhand eines Beispiels wird gezeigt wie Werte in Zellen programmatisch eingefügt werden und eine Formatierung angewandt wird. Um das Beispiel etwas interessanter zu machen, lesen wir Datensätze einer MS Access Datenbank ein und wenden zudem auch noch eine kleine Berechnugnsformel an. Das BeispielWichtig: Dem Artikel liegt die gratis downloadbare Evaluierungsversion zugrunde, die gegenüber der kostenpflichtigen Vollversion einen eingeschränkten Funktionsumfang hat. Wir lesen aus der Products Tabelle der Northwind MS Access Datenbank die Spalten ProductName, UnitPrice und UnitsInStock aus. Danach werden wir uns aus dem Listenpreis (UnitPrice), der aus der Datenbank stammt, mithilfe einer kleinen Formel den Bruttopreis (also inklusive Mehrwertsteuer) ausrechnen. Damit die generierte Excel-Tabelle auch Spaltenüberschriften bekommt, werden wir diese programmatisch erstellen und diese auch formatieren. Mit diesem Beispiel hätten wir dann alle wichtigen Grundfunktionen der Komponente abgedeckt. Schreiten wir nun zur Ausführung (XWri_Tab.asp).
<% @LANGUAGE = VBScript %> <!--METADATA TYPE="TypeLib" UUID="7BCD2133-64A0-4770-843C-090637114583" --> <% Option Explicit Dim objConn, objRS, HeadingStyle, objXlw, objWS Dim strConn, strSQL, i, Rows, cell, n Set objConn = Server.CreateObject("ADODB.Connection") strConn = "DSN=Northwind;UID=sa; PWD=;" objConn.Open strConn Set objRS = Server.CreateObject("ADODB.Recordset") Set objRS.ActiveConnection = objConn strSQL ="SELECT Products.ProductName, Products.UnitPrice,Products.UnitsInStock " strSQL = strSQL & "FROM Products" objRS.Open strSQL ... Im ersten Teil des Sourcecodes eigentlich nichts Aufregendes. Zuerst die Angabe der Verwendeten Sprache, dann die TypeLib Bindung, sowie die Variablendeklarationen - da ja Option Explicit verwendet wird. Es folgt die Erstellung des Connection Objekts (objConn), die Deklaration dessen und schließlich die Öffung der Verbindung zur Datenbank. Nun die Erstellung des Recordset Objekts (objRS) und die Zuweisung des Connection Strings. Danach die Deklaration der SQL-String Variable (strSQL) und ihre Definition.
Set objXlw = Server.CreateObject("Softartisans.ExcelWriter") Set objWS = objXlw.Worksheets(1).Cells set HeadingStyle = ObjXlw.CreateStyle HeadingStyle.Font.Size = 12 HeadingStyle.Font.Bold = true for i = 1 to 4 objWS(1, i).Style = HeadingStyle next objWS("A1").Value = "Produktname" objWS("B1").Value = "Listenpreis" objWS("C1").Value = "Lagerbestand" objWS("D1").Value = "Preis inkl MwSt" Als nächstes erstellen wir das ExcelWriter Objekt objXlw und ein Worksheet, das die aus der Datenbank angeforderten Daten enthalten soll. Um die Spaltenüberschriften der Tabelle formatieren zu können, erstellen wir uns einen Schriftstil (HeadingStyle) indem wir die CreateStyle Methode des ExcelWriter Objekts verwenden. Mit den beiden Eigenschaften Font.Size bzw. Font.Bold setzen wir die Schriftgröße bzw. den Fettdruck. Um den Schriftstil nun auch anzuwenden, verwenden wir einfach eine for-Schleife. Die Beschriftung der Tabellenspalten erfolgt mit Value.
Rows = objWS.CopyFromRecordset(objRS, False, 2, 1) for n = 2 to Rows objWS(n,4).Formula = "=b" & n & "*1.2" next objXlw.Save "database.xls", saOpenInPlace objRS.Close objConn.Close Set objRS = Nothing Set objConn = Nothing Set objXlw = Nothing %> Mit der CopyFromRecordSet Methode importieren wir die Datensätze in die Excel-Tabelle. Die Methode schreibt alle Datensätze, die das Recordset enthält in die Tabelle. Die Methode hat folgende Parameter:
Rows = objWS.CopyFromRecordset(ADO-RecordSet, [ShowHeaders (True/False)] [FirstRow], [FirstColumn], [MaxRows], [MaxColumns]) Wenn Parameter nicht explizit angegeben werden, werden die Standardwerte des Microsoft BIFF7 Formats verwendet:
Da wir ja unsere eigenen Spaltenüberschriften verwenden wollen, setzten wir ShowHeaders auf "False". Damit sie nicht durch die Daten überschrieben werden fügen wir die Daten aus dem Recordset erst in der Spalte A2 ein (FirstRow = 2, FirstColumn = 1) Nun erstellen wir uns noch eine kleine Formel um die Mehrwertsteuer zu berechnen. Dies geschieht einfach mit der Angabe von Formula und dem Formelausdruck, der wie in Excel üblich anzugeben ist. Um die Datei lokal abspeichern zu können, verwenden wir die Save Methode des ExcelWriter Objekts. Abschließend "räumen" wir noch den Speicher auf indem wir die benötigten Resourcen wieder freigeben bzw. die DB-Verbindung schließen und die verwendeten Objekte zerstören. Nachdem die Datei lokal abgespeichert wurde, können Sie diese in MS Excel öffen, und falls nötig später editieren. Das Ergebnis unseres Beispiels sieht dann so aus: SchlußbemerkungMit der ExcelWriter Komponente von Software Artisans können Sie programmatisch editierbare Excel Spreadsheets erstellen. Dieser Artikel zeigte Ihnen die wichtigsten Grundfunktionen der ExcelWriter Komponente. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Die SA Excel Writer Komponente Links zu anderen Sites
SA ExcelWriter Demoseite Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |