Sign in Join
Wiki copytemporary

csv to html/de

Zurück zur Seite Code Beispiele.\

Umsetzen einer CSV-Datei in eine HTML-Datei.
Verarbeiten der CSV-Datei:

pascal
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:

pascal
begin
  
  ...
  
  uVerarbeiten.subCSVDateiEinlesenUndVerarbeiten('Unbenannt 1.csv', ',',
    'Ausgabe.html', 'Testseite', 5);
  
  ...
  
end;

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.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.