Einen Bericht im html-Format in die zip-Archive speichern

2016-04-13

Bei der Entwicklung einer PHP – Anwendung wurde eine Aufgabe gestellt, Berichte zu machen. Weil ich eine große Arbeiterfahrung mit FastReport .Net habe, habe ich mich entschieden, diesen Berichtsgeneratoren zu verwenden. Leider, gibt es keine Möglichkeit, Web Berichte zu benutzen, weil wir uns mit ASP .Net in diesem Projekt nicht beschäftigen. In diesem Fall sieht ein REST Webservice wie eine gute Lösung aus. Dieses Service wird Berichte erstellen und der PHP – Anwendung übergeben. Über die Entwicklung solches Services erzähle ich ein bisschen später, jetzt geht es um das Prozess der Erstellung und Vorbereitung des Berichts zur Übergabe durch REST. Um den Codebeschreibung zu erleichtern zeige ich das für den Fall von der Konsole.

Hier brauchen wir Bibliotheken von FastReport:

1
2
3
using FastReport;
using FastReport.Export.Html;
using FastReport.Utils;

Berichtsübergabe wird wie ein Parameter eingestellt.

1
2
3
4
5
6
7
 static void Main(string[] args)
 {
 if (args.Length > 0)
 DoExport(args[0]);
 else
 Console.WriteLine("Set the report file (*.frx) as parameter");
 }

Erstellen wir eine Exportsmethode in die HTML und Archivierung in die ZIP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private static void DoExport(string reportFile)
 {
 if (File.Exists(reportFile))
 {
 Config.WebMode = true; // aktivieren wir WebMode Regime für thread-safe code Verwendung.
 using (Report report = new Report()) // erstellen wir ein Berichtsexemplar
 {
 report.Load(reportFile); // laden wir den Bericht von der Datei herunter.
 report.Prepare(); // vorbereiten wir den Bericht
 using (HTMLExport html = new HTMLExport()) // erstellen wir ein Exemplar vom Exportsobjekt in die HTML
 {
 html.SaveStreams = true; // aktivieren wir die Regime vom Speichern in den Stream
 report.Export(html, (Stream)null); // setzen wir null den Stream ein, wir haben mehrere Streams innen des Objekts
 if (html.GeneratedFiles.Count > 0)
 {
 ZipArchive zip = new ZipArchive(); // erstellen wir ein Exemplar von der ZIP-Archive
 for(int i = 0; i < html.GeneratedFiles.Count; i++)
 zip.AddStream(html.GeneratedFiles[i], html.GeneratedStreams[i]); //fügen wir Streams mit den Namen der Dateien in die Archive hinzu 
 zip.SaveToFile(Path.GetFileNameWithoutExtension(reportFile) + ".zip"); // speichern wir zip in die Datei
 }
 } 
 }
 }
 else
 Console.WriteLine("File " + reportFile + " not found!");
 }

Hier merkt man die Eigenschaft  Config.WebMode – sie aktiviert eine „ruhe“ Regime der  Berichtserstellung ohne Dialog und Progress Schaufenster auf dem Bildschirm.

Im diesem Beispiel packe ich einen Bericht, aber es gibt kein Problem, mehrere Berichte in die Archive zu speichern.

Jetzt starten wir die Anwendung in der Konsole mit dem Parameter. Im Parameter geben wir den Weg zum Bericht ein. Dann bekommen wir im Ordner eine ZIP-Archive, in dem der Bericht im html-Format gepackt wird. Auf diese Weise  kann man beim Benutzen von meiner PHP – Anwendung (oder von anderer beliebigen) die Archive mit einem oder mehreren Berichten übergeben. Diese Berichte werden zur Vorschau bereit.

.NET .NET FastReport FastReport HTML HTML
22. April 2025

Umgang mit der TfrShellTreeView-Komponente in FastReport VCL

In diesem Artikel werden wir uns die TfrShellTreeView-Komponente ansehen. Es dient zur Anzeige von Dateisystemelementen und ist teilweise analog zu den Komponenten TDirectoryListBox, TDirectoryOutline und TShellTreeView.
21. April 2025

Funktionsweise von RFID-Tags in FastReport VCL

In diesem Artikel werden wir die Funktionsweise von RFID-Tags mit dem neuen TfrxDeviceCommand-Objekt in FastReport VCL mit der Veröffentlichung 2025.2 untersuchen.
8. April 2025

Konvertieren einer Microsoft Word-Datei (.docx) in eine FastReport .NET-Datei (.frx)

Ein Konverter von Microsoft Word (.docx) Format zu einem file FastReport .NET (.frx): Beschreibung und Anweisungen zur Verwendung des Tools.
Fast Reports
  • 800-985-8986 (Englisch, USA)
  • +31 97 01025-8466 (Englisch, EU)
  • +49 30 56837-3928 (Deutsch, DE)
  • +55 19 98147-8148 (Portugiesisch, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.