Seite 1 von 1

Datatool - Mehrere Datenbasen in eine Tabelle laden

Verfasst: Fr 30. Okt 2015, 13:52
von ionas
Hallo!

Ich habe mehrere CSV-Dateien, zu verarbeiten, die nur eine Zeile enthalten.
Die würde ich gerne zu einer Tabelle in Latex verwandeln.
So in etwa:
\DTLloaddb[noheader]{dbi}
\DTLloaddb[noheader]{dbii}
\begin{table}
\begin{tabular}{l l l}
Spalte1 & Spalte2 & Spalte3
\tabularnewline
\DTLdisplaydb{dbi}
\tabularnewline
\DTLdisplaydb{dbii}
\end{tabular}
\end{table}
Wenn ich das so mache schreibt er den kompletten Inhalt der Datenbasen in die erste Spalte ... Außerdem schreibt er über jede Spalte Column1, Column2 etc.

Ist das möglich?

Ich habe noch nicht so ganz verstanden, wie Datatool arbeitet.
Kann ich mehrere Datenbasen gleichzeitig laden und verarbeiten?
Das wäre ja die Voraussetzung für die Lösung meines Problems.[/code]

Verfasst: Fr 30. Okt 2015, 15:12
von esdd
Wenn die CSV-Dateien alle in einer Tabelle ausgegeben werden, dann kannst Du sie gleich in eine Datenbank einlesen:
\DTLnewdb{daten}
\DTLnewdbonloadfalse
\DTLloaddb[noheader]{daten}{daten1.csv}
\DTLloaddb[noheader]{daten}{daten2.csv}
Die Ausgabe kannst Du dann mit
\DTLdisplaydb{daten}
automatisch vornehmen lassen. In der Dokumentation (User guide) zu datatool findest Du noch einige Befehle, die umdefiniert werden können, um die Formatierung der Tabelle zu ändern.

Bei komplizierteren Tabellen empfiehlt sich dagegen die Nutzung von \DTLforeach.

Beispiel:
\documentclass{article}
\begin{filecontents*}{daten1.csv}
1;2;3
\end{filecontents*}
\begin{filecontents*}{daten2.csv}
a;b;c
\end{filecontents*}

\usepackage{datatool}
\DTLsetseparator{;}

\DTLnewdb{daten}
\DTLnewdbonloadfalse
\DTLloaddb[noheader]{daten}{daten1.csv}
\DTLloaddb[noheader]{daten}{daten2.csv}

\begin{document}

% Beispiel für automatisierte Ausgabe
\DTLsetheader{daten}{Column1}{I}
\DTLsetheader{daten}{Column2}{II}
\DTLsetheader{daten}{Column3}{III oder was auch immer}
\renewcommand\dtlheaderformat[1]{#1}
\DTLdisplaydb{daten}
%
\hfill
%
% Beispiel für Nutzung von \DTLforeach
\begin{tabular}{l l l} 
 Spalte 1 & Spalte 2 & Spalte 3 
\tabularnewline 
\DTLforeach{daten}{\sI=Column1,\sII=Column2,\sIII=Column3}{%
  \sI&\sII&\sIII%
  \DTLiflastrow{}{\tabularnewline}%
}
\end{tabular} 
\end{document}
Gruß
Elke

Verfasst: Mo 9. Nov 2015, 17:02
von ionas
Vielen Dank! :-)

Funktioniert wunderbar!
Ich werde noch versuchen das ganze mit Variablen zu füllen und mich ggf. noch mal melden, wenn ich hier auf Probleme stoßen sollte ;-)