csv to html/de
From Free Pascal wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
│
Deutsch (de) │
Zurück zur Seite Code Beispiele.
Umsetzen einer CSV-Datei in eine HTML-Datei.
Verarbeiten der CSV-Datei:
unit uVerarbeiten;
unit uEinlesen;
{$mode objfpc}{$H+}
{$IMPLICITEXCEPTIONS OFF}
interface
uses
SysUtils, FileUtil;
function subCSVDateiEinlesenUndVerarbeiten(const strNameQuellDatei: string;
const chrDelimiter: char; const strNameZielDatei: string;
const strRegistertitel: string; const bytHTMLHeader: byte): boolean;
implementation
const
conSpaltenAnfang = '<td>';
conSpaltenEnde = '</td>';
conZeilenAnfang = '<tr>';
conZeilenEnde = '</tr>';
conTabellenAnfang = '<table align="center">';
conTabellenEnde = '</table>';
conAbsatzAnfang = '<p>';
conAbsatzEnde = '</p>';
var
datQuellDatei: TextFile; // CSV-Datei
datZielDatei: TextFile; // HTML-Datei
procedure subCSS;
begin
WriteLn(datZielDatei, '<style type="text/css">');
WriteLn(datZielDatei, ' table');
WriteLn(datZielDatei, ' {');
WriteLn(datZielDatei, ' border-collapse:collapse;');
WriteLn(datZielDatei, ' border-style: solid;');
WriteLn(datZielDatei, ' border-color: black;');
WriteLn(datZielDatei, ' border-with: 1px;');
WriteLn(datZielDatei, ' background-color: #CCCCCF;');
WriteLn(datZielDatei, ' padding: 0.0cm;');
WriteLn(datZielDatei, ' text-align: center;');
WriteLn(datZielDatei, ' }');
WriteLn(datZielDatei, ' td');
WriteLn(datZielDatei, ' {');
WriteLn(datZielDatei, ' border-top: solid;');
WriteLn(datZielDatei, ' border-right: solid;');
WriteLn(datZielDatei, ' border-bottom: solid;');
WriteLn(datZielDatei, ' border-left: solid;');
WriteLn(datZielDatei, ' border-with: 1px;');
WriteLn(datZielDatei, ' padding: 0.1cm;');
WriteLn(datZielDatei, ' }');
WriteLn(datZielDatei, '</style>');
end;
function funSpaltenZaehlen(const strUebergabe: string;
const chrDelimiter: char): integer;
var
intI: integer;
begin
funSpaltenZaehlen := 0;
for intI := 1 to Length(strUebergabe) do
if strUebergabe[intI] = chrDelimiter then
Inc(funSpaltenZaehlen);
end;
// ----------------------------------------
// Unterprogramme für die HTML-Datei Anfang
// ----------------------------------------
procedure subHTMLTagSchreiben(const strTag: string; const blnZeilenumbruch: boolean);
begin
if blnZeilenumbruch = False then
Write(datZielDatei, strTag)
else
WriteLn(datZielDatei, strTag);
end;
procedure subHTMLAusgabeDateiSchliessen;
begin
Close(datZielDatei);
end;
procedure subHTML4Kopf(const strRegistertitel: string);
begin
writeln(datZielDatei, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"');
writeln(datZielDatei, '"http://www.w3.org/TR/html4/loose.dtd">');
writeln(datZielDatei, '<html>');
writeln(datZielDatei, '<head>');
writeln(datZielDatei, '<title>' + strRegistertitel + '</title>');
subCSS;
writeln(datZielDatei, '</head>');
writeln(datZielDatei, '<body>');
writeln(datZielDatei, '');
end;
procedure subHTML5Kopf(const strRegistertitel: string);
begin
Append(datZielDatei); // Setzt den Dateizeiger auf das Ende der Datei
writeln(datZielDatei, '<!DOCTYPE HTML>');
writeln(datZielDatei, '<html>');
writeln(datZielDatei, '<head>');
writeln(datZielDatei, '<title>' + strRegistertitel + '</title>');
subCSS;
writeln(datZielDatei, '</head>');
writeln(datZielDatei, '<body>');
writeln(datZielDatei, '');
end;
procedure subHTMLFuss;
begin
writeln(datZielDatei, '</body> ');
writeln(datZielDatei, '</html>');
end;
procedure subHTMLAusgabeDateiErstellen(const strAusgabedatei: string);
begin
AssignFile(datZielDatei, strAusgabedatei);
ReWrite(datZielDatei); // Erstellt die Datei bzw. überschreibt eine vorhandene Datei
Append(datZielDatei); // Setzt den Dateizeiger auf das Ende der Datei
end;
procedure subHTMLSpaltenErstellen(const strUebergabe: string; const chrDelimiter: char);
var
intI: integer = 0;
intLaenge: integer = 0;
strZelle: string = '';
begin
// Leere Zeilen werden übersprungen
intLaenge := Length(strUebergabe);
if intLaenge < 1 then
exit;
subHTMLTagSchreiben(conZeilenAnfang, True);
subHTMLTagSchreiben(conSpaltenAnfang, False);
for intI := 1 to intLaenge do
begin
if strUebergabe[intI] = chrDelimiter then
begin
Write(datZielDatei, strZelle);
strZelle := '';
subHTMLTagSchreiben(conSpaltenEnde, False);
subHTMLTagSchreiben(conSpaltenAnfang, False);
end
else
strZelle := strZelle + strUebergabe[intI];
end;
Write(datZielDatei, strZelle);
subHTMLTagSchreiben(conSpaltenEnde, True);
subHTMLTagSchreiben(conZeilenEnde, True);
end;
// --------------------------------------
// Unterprogramme für die HTML-Datei Ende
// --------------------------------------
function subCSVDateiEinlesenUndVerarbeiten(const strNameQuellDatei: string;
const chrDelimiter: char; const strNameZielDatei: string;
const strRegistertitel: string; const bytHTMLHeader: byte): boolean;
var
strText: string = '';
begin
Result := False;
// Prüft, ob ein gültiger HTML-Header gewählt wurde
if (bytHTMLHeader < 4) or (bytHTMLHeader > 5) then
exit;
// Prüft, ob die Quelldatei existiert
if not FileExists(strNameQuellDatei) then
exit;
// Prüft, ob die Quelldatei Daten enthält
if filesize(strNameQuellDatei) = 0 then
exit;
// Öffnet die Quelldatei
AssignFile(datQuellDatei, strNameQuellDatei);
// Setzt den Dateizeiger auf den Anfang der Datei
Reset(datQuellDatei);
// Erstellen der HTML-Datei - Anfang
subHTMLAusgabeDateiErstellen(strNameZielDatei);
case bytHTMLHeader of
4: subHTML4Kopf(strRegistertitel);
5: subHTML5Kopf(strRegistertitel);
end;
subHTMLTagSchreiben(conAbsatzAnfang, True);
subHTMLTagSchreiben(conTabellenAnfang, True);
repeat
ReadLn(datQuellDatei, strText);
subHTMLSpaltenErstellen(strText, chrDelimiter);
until EOF(datQuellDatei);
subHTMLTagSchreiben(conTabellenEnde, True);
subHTMLTagSchreiben(conAbsatzEnde, True);
subHTMLFuss;
subHTMLAusgabeDateiSchliessen;
// Erstellen der HTML-Datei - Ende
// Schliesst die Quelldatei
CloseFile(datQuellDatei);
Result := True;
end;
end.
Aufrufen des Unterprogramms:
begin
...
uVerarbeiten.subCSVDateiEinlesenUndVerarbeiten('Unbenannt 1.csv', ',',
'Ausgabe.html', 'Testseite', 5);
...
end;