Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

SA ExcelWriter in Action

Geschrieben von: Christian Holm
Kategorie: ASP Tricks

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 Beispiel

Wichtig: 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:

  • ShowHeaders - True
  • FirstRow, FirstColumn - 1
  • MaxRows - 16384
  • MaxColumns - 256

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ßbemerkung

Mit 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 Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Die SA Excel Writer Komponente
Ein Excel-Diagramm am Server generieren und zum Client schicken
Ein Excel-Sheet am Server generieren und zum Client schicken
Serverdaten clientseitig in Exceltemplates importieren

Links zu anderen Sites

SA ExcelWriter Demoseite
SA ExcelWriter Seite
SoftwareArtisans

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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.