Datatool - Mehrere Datenbasen in eine Tabelle laden

Tabellen und Grafiken erstellen und anordnen


ionas
Forum-Anfänger
Forum-Anfänger
Beiträge: 13
Registriert: Di 20. Okt 2015, 16:27

Datatool - Mehrere Datenbasen in eine Tabelle laden

Beitrag 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]

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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

ionas
Forum-Anfänger
Forum-Anfänger
Beiträge: 13
Registriert: Di 20. Okt 2015, 16:27

Beitrag 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 ;-)

Antworten