Sign in Join
Wiki copytemporary

csv to html/de: what changed

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

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