Wie erstelle ich einen HTML-Bericht, ohne den HTML-Code hart zu codieren?

7

Ich überarbeite derzeit eine Konsolenanwendung, deren Hauptaufgabe darin besteht, einen Bericht auf der Grundlage von in der Datenbank gespeicherten Werten zu erstellen.

Die Art, wie ich den Bericht bis jetzt erstellt habe, ist wie folgt:

%Vor%

(Das obige ist nur ein Beispiel ... und tut mir leid wegen der Formatierung ... Ich habe versucht, es so zu formatieren, dass es kein horizontales Scrollen erfordert ....)

Ich mag es wirklich nicht so, dass ich das gemacht habe. Es funktioniert und macht den Job für jetzt ... aber ich halte es einfach nicht für wartbar ... vor allem, wenn der Bericht in Bezug auf den HTML, der erstellt werden muss, komplexer wird. Schlimmer noch, andere Entwickler in meinem Team sind sicher, meinen Code für ihre Anwendungen zu kopieren und einzufügen, die einen HTML-Bericht erzeugen und wahrscheinlich ein schreckliches Durcheinander verursachen werden. (Ich habe schon gesehen, wie solche Schrecken erzeugt wurden! Stellen Sie sich eine Berichtsfunktion vor, die Hunderte von Zeilen hart codierten SQL enthält, um die Details des Berichts abzurufen ... genug, um einen erwachsenen Mann zum Weinen zu bringen!)

Obwohl ich das überhaupt nicht mag, kann ich mir einfach keine andere Möglichkeit vorstellen.

Sicherlich muss es einen Weg geben, dies zu tun ... ich bin mir sicher. Vor nicht allzu langer Zeit habe ich dasselbe getan, als ich Tabellen in ASPX-Seiten erzeugte, bis jemand mir freundlicherweise zeigte, dass ich die Objekte einfach an ein Steuerelement binden und .NET das Rendering übernehmen lassen kann. Es verwandelte schrecklichen Code, ähnlich dem obigen Code, in zwei oder drei elegante Linien des Guten.

Kennt jemand eine ähnliche Möglichkeit, den HTML-Code für diesen Bericht zu erstellen, ohne den HTML-Code hart zu codieren?

    
mezoid 29.03.2009, 23:50
quelle

7 Antworten

10

Machen Sie Ihre App zur Erstellung einer XML-Datei mit Rohdaten. Dann wenden Sie eine externe XSLT an, die HTML enthalten würde.

Weitere Informationen: Ссылка

    
GSerg 29.03.2009, 23:59
quelle
4

Sie können eine Vorlage-Engine wie NVelocity verwenden, um Ihre Berichtsansicht und Ihren Code zu trennen. Es gibt wahrscheinlich andere anständige Template-Engines da draußen ...

    
markt 30.03.2009 00:13
quelle
3

meziod - Eine weitere Möglichkeit zum Durchlesen sind Erweiterungsmethoden für das HtmlTextWriter-Objekt. Ich habe gerade auf dieser Seite einen brillanten Stich gefunden.

HtmlTextWriter-Erweiterung

Ich bin mir sicher, dass Sie daraus ein großes Potenzial ziehen könnten ...

Grüße - Coola

    
coolashaka 30.03.2009 12:40
quelle
2

Nun, Sie könnten eines der Berichtsframeworks (Crystal, MS RDL, etc) und export als HTML verwenden - ich vermute jedoch, dass für einfache Daten Ihr aktueller Ansatz weniger Overhead ist. Ich könnte ein XmlWriter oder LINQ-to-XML verwenden (anstatt string.Format , das nicht mit dem Escaping umgehen kann) ...

%Vor%

usw. Escapen ist besonders wichtig für Textwerte (Name, Beschreibung usw.).

    
Marc Gravell 29.03.2009 23:54
quelle
1

Sie können eine einfache Vorlagen-Engine wie Ссылка verwenden und Ihre Vorlage vom Inhalt trennen.

Dies ist ziemlich praktisch, erlaubt Template-Änderungen ohne Neukompilierung und Sie haben immer noch C # -Power in Ihren Vorlagen.

    
dr. evil 30.03.2009 00:13
quelle
0

Microsoft SQL Reporting Services macht das ziemlich gut und kann mehrere Formate verwenden.

Mein Unternehmen verwendet es, um PDF-Berichte zu erstellen, und da wir HIPAA-Anforderungen haben, setzen wir ihm automatisch ein Passwort über ein PDF-Steuerelement eines Drittanbieters ...

    
irperez 30.03.2009 01:36
quelle
0

Wie bereits erwähnt, ist die Verwendung von HtmlTextWriter eine gute Option, besonders wenn Sie einige nützliche Erweiterungsmethoden hinzufügen, zum Beispiel:

Einfaches Beispiel:

%Vor%

Ich weiß, dass dies eine alte Frage ist, aber Google wird die Leute noch jahrelang hierher leiten.

    
Sprezlaus 28.04.2017 09:57
quelle

Tags und Links