csv to html/de
From Lazarus wiki
Jump to navigationJump to search
│
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;