Sign in Join
Wiki copytemporary

csv to html/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: csv to html/de

OldNewLine
1+│ **Deutsch (de)** │
2+****
3+Zurück zur Seite [[code examples/de|Code Beispiele]].
4+
5+Umsetzen einer CSV-Datei in eine HTML-Datei.
6+Verarbeiten der CSV-Datei:
7+```
8+unit uVerarbeiten;
9+
10+ unit uEinlesen;
11+
12+ {$mode objfpc}{$H+}
13+ {$IMPLICITEXCEPTIONS OFF}
14+
15+ interface
16+
17+ uses
18+ SysUtils, FileUtil;
19+
20+ function subCSVDateiEinlesenUndVerarbeiten(const strNameQuellDatei: string;
21+ const chrDelimiter: char; const strNameZielDatei: string;
22+ const strRegistertitel: string; const bytHTMLHeader: byte): boolean;
23+
24+
25+ implementation
26+
27+ const
28+ conSpaltenAnfang = '<td>';
29+ conSpaltenEnde = '</td>';
30+ conZeilenAnfang = '<tr>';
31+ conZeilenEnde = '</tr>';
32+ conTabellenAnfang = '<table align="center">';
33+ conTabellenEnde = '</table>';
34+ conAbsatzAnfang = '<p>';
35+ conAbsatzEnde = '</p>';
36+
37+ var
38+ datQuellDatei: TextFile; // CSV-Datei
39+ datZielDatei: TextFile; // HTML-Datei
40+
41+
42+ procedure subCSS;
43+ begin
44+ WriteLn(datZielDatei, '<style type="text/css">');
45+
46+ WriteLn(datZielDatei, ' table');
47+ WriteLn(datZielDatei, ' {');
48+ WriteLn(datZielDatei, ' border-collapse:collapse;');
49+ WriteLn(datZielDatei, ' border-style: solid;');
50+ WriteLn(datZielDatei, ' border-color: black;');
51+ WriteLn(datZielDatei, ' border-with: 1px;');
52+ WriteLn(datZielDatei, ' background-color: #CCCCCF;');
53+ WriteLn(datZielDatei, ' padding: 0.0cm;');
54+ WriteLn(datZielDatei, ' text-align: center;');
55+ WriteLn(datZielDatei, ' }');
56+
57+ WriteLn(datZielDatei, ' td');
58+ WriteLn(datZielDatei, ' {');
59+ WriteLn(datZielDatei, ' border-top: solid;');
60+ WriteLn(datZielDatei, ' border-right: solid;');
61+ WriteLn(datZielDatei, ' border-bottom: solid;');
62+ WriteLn(datZielDatei, ' border-left: solid;');
63+ WriteLn(datZielDatei, ' border-with: 1px;');
64+ WriteLn(datZielDatei, ' padding: 0.1cm;');
65+ WriteLn(datZielDatei, ' }');
66+
67+ WriteLn(datZielDatei, '</style>');
68+ end;
69+
70+ function funSpaltenZaehlen(const strUebergabe: string;
71+ const chrDelimiter: char): integer;
72+ var
73+ intI: integer;
74+
75+ begin
76+
77+ funSpaltenZaehlen := 0;
78+ for intI := 1 to Length(strUebergabe) do
79+ if strUebergabe[intI] = chrDelimiter then
80+ Inc(funSpaltenZaehlen);
81+
82+ end;
83+
84+ // ----------------------------------------
85+ // Unterprogramme für die HTML-Datei Anfang
86+ // ----------------------------------------
87+
88+ procedure subHTMLTagSchreiben(const strTag: string; const blnZeilenumbruch: boolean);
89+ begin
90+ if blnZeilenumbruch = False then
91+ Write(datZielDatei, strTag)
92+ else
93+ WriteLn(datZielDatei, strTag);
94+ end;
95+
96+
97+
98+ procedure subHTMLAusgabeDateiSchliessen;
99+ begin
100+ Close(datZielDatei);
101+ end;
102+
103+
104+
105+ procedure subHTML4Kopf(const strRegistertitel: string);
106+ begin
107+ writeln(datZielDatei, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"');
108+ writeln(datZielDatei, '"http://www.w3.org/TR/html4/loose.dtd">');
109+ writeln(datZielDatei, '<html>');
110+ writeln(datZielDatei, '<head>');
111+ writeln(datZielDatei, '<title>' + strRegistertitel + '</title>');
112+ subCSS;
113+ writeln(datZielDatei, '</head>');
114+ writeln(datZielDatei, '<body>');
115+ writeln(datZielDatei, '');
116+ end;
117+
118+
119+
120+ procedure subHTML5Kopf(const strRegistertitel: string);
121+ begin
122+ Append(datZielDatei); // Setzt den Dateizeiger auf das Ende der Datei
123+ writeln(datZielDatei, '<!DOCTYPE HTML>');
124+ writeln(datZielDatei, '<html>');
125+ writeln(datZielDatei, '<head>');
126+ writeln(datZielDatei, '<title>' + strRegistertitel + '</title>');
127+ subCSS;
128+ writeln(datZielDatei, '</head>');
129+ writeln(datZielDatei, '<body>');
130+ writeln(datZielDatei, '');
131+
132+ end;
133+
134+
135+
136+ procedure subHTMLFuss;
137+ begin
138+ writeln(datZielDatei, '</body> ');
139+ writeln(datZielDatei, '</html>');
140+ end;
141+
142+
143+
144+ procedure subHTMLAusgabeDateiErstellen(const strAusgabedatei: string);
145+ begin
146+ AssignFile(datZielDatei, strAusgabedatei);
147+ ReWrite(datZielDatei); // Erstellt die Datei bzw. überschreibt eine vorhandene Datei
148+ Append(datZielDatei); // Setzt den Dateizeiger auf das Ende der Datei
149+ end;
150+
151+
152+
153+ procedure subHTMLSpaltenErstellen(const strUebergabe: string; const chrDelimiter: char);
154+ var
155+ intI: integer = 0;
156+ intLaenge: integer = 0;
157+ strZelle: string = '';
158+
159+ begin
160+
161+ // Leere Zeilen werden übersprungen
162+ intLaenge := Length(strUebergabe);
163+ if intLaenge < 1 then
164+ exit;
165+
166+ subHTMLTagSchreiben(conZeilenAnfang, True);
167+ subHTMLTagSchreiben(conSpaltenAnfang, False);
168+
169+ for intI := 1 to intLaenge do
170+ begin
171+
172+ if strUebergabe[intI] = chrDelimiter then
173+ begin
174+ Write(datZielDatei, strZelle);
175+ strZelle := '';
176+ subHTMLTagSchreiben(conSpaltenEnde, False);
177+ subHTMLTagSchreiben(conSpaltenAnfang, False);
178+ end
179+ else
180+ strZelle := strZelle + strUebergabe[intI];
181+
182+ end;
183+
184+ Write(datZielDatei, strZelle);
185+
186+ subHTMLTagSchreiben(conSpaltenEnde, True);
187+ subHTMLTagSchreiben(conZeilenEnde, True);
188+
189+ end;
190+
191+
192+
193+ // --------------------------------------
194+ // Unterprogramme für die HTML-Datei Ende
195+ // --------------------------------------
196+
197+
198+
199+ function subCSVDateiEinlesenUndVerarbeiten(const strNameQuellDatei: string;
200+ const chrDelimiter: char; const strNameZielDatei: string;
201+ const strRegistertitel: string; const bytHTMLHeader: byte): boolean;
202+ var
203+ strText: string = '';
204+
205+ begin
206+
207+ Result := False;
208+
209+ // Prüft, ob ein gültiger HTML-Header gewählt wurde
210+ if (bytHTMLHeader < 4) or (bytHTMLHeader > 5) then
211+ exit;
212+
213+ // Prüft, ob die Quelldatei existiert
214+ if not FileExists(strNameQuellDatei) then
215+ exit;
216+
217+ // Prüft, ob die Quelldatei Daten enthält
218+ if filesize(strNameQuellDatei) = 0 then
219+ exit;
220+
221+ // Öffnet die Quelldatei
222+ AssignFile(datQuellDatei, strNameQuellDatei);
223+ // Setzt den Dateizeiger auf den Anfang der Datei
224+ Reset(datQuellDatei);
225+
226+ // Erstellen der HTML-Datei - Anfang
227+ subHTMLAusgabeDateiErstellen(strNameZielDatei);
228+ case bytHTMLHeader of
229+ 4: subHTML4Kopf(strRegistertitel);
230+ 5: subHTML5Kopf(strRegistertitel);
231+ end;
232+
233+ subHTMLTagSchreiben(conAbsatzAnfang, True);
234+ subHTMLTagSchreiben(conTabellenAnfang, True);
235+
236+ repeat
237+ ReadLn(datQuellDatei, strText);
238+ subHTMLSpaltenErstellen(strText, chrDelimiter);
239+ until EOF(datQuellDatei);
240+
241+ subHTMLTagSchreiben(conTabellenEnde, True);
242+ subHTMLTagSchreiben(conAbsatzEnde, True);
243+ subHTMLFuss;
244+ subHTMLAusgabeDateiSchliessen;
245+ // Erstellen der HTML-Datei - Ende
246+
247+ // Schliesst die Quelldatei
248+ CloseFile(datQuellDatei);
249+
250+ Result := True;
251+
252+ end;
253+
254+ end.
255+```
256+
257+Aufrufen des Unterprogramms:
258+```
259+begin
260+
261+ ...
262+
263+ uVerarbeiten.subCSVDateiEinlesenUndVerarbeiten('Unbenannt 1.csv', ',',
264+ 'Ausgabe.html', 'Testseite', 5);
265+
266+ ...
267+
268+ end;
269+```
270+
271+---
272+*From the Free Pascal wiki, page "csv to html/de", as the Internet Archive kept it on 2024-08-04. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history