Seite 1 von 1
Tabelle aus CSV Datei mit fester Breite
Verfasst: Mi 8. Nov 2017, 15:08
von Ricky
Hallo zusammen,
ich möchte gerne mit Hilfe von Informationen aus CSV Dateien in Latex Tabellen erstellen. Die Breite der Tabelle soll dabei fest sein, wobei die Spaltenanzahl variieren kann (im Vorliegenden Minimalbeispiel könnte beispielsweise noch die Information "E-Mail Adresse" hinzukommen).
D.h. die Tabellenbreite wäre dann im Fall von 3 Spalten überdimensioniert. Wie viele Spalten sich noch hinzufügen lassen hängt von dem Text der einzelnen Spalten ab. So wie in diesem Bild dargestellt:
Hat jemand eine Idee, wie ich dieses Vorhaben umsetzen kann?
\documentclass[11pt,a4paper]{scrartcl}
\usepackage{csvsimple} %Package fuer CSV-Dateien
\begin{filecontents*}{Tabelle.csv}
Nachname,Vorname,Alter
Mustermann,Max,30
\end{filecontents*}
\begin{document}
\csvautotabular{Tabelle.csv}
\end{document}
Vielen Dank im Voraus!
Gruß
Ricky[/img]
Verfasst: Mi 8. Nov 2017, 15:41
von markusv
csvsimple bietet viele Möglichkeiten, Tabellen indivivduell zu gestalten. Also auch gerne mal in der Doku lesen. Aus
https://tex.stackexchange.com/questions ... -csvsimple habe ich mal drei Varianten zusammengestellt und auf dein Problem abgeändert:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage{csvsimple} %Package fuer CSV-Dateien
\begin{filecontents*}{Tabelle.csv}
Nachname,Vorname,Alter,E-Mail,Telefon
Mustermann,Max,30,m.max@web.de,0180/123123
\end{filecontents*}
\begin{document}
\csvreader[tabular=|p{3cm}|p{6cm}|r|p{2.5cm}|l|,
no head,
table head=\hline,
late after line=\\\hline]%
{Tabelle.csv}{}%
{\csvcoli & \csvcolii & \csvcoliii}%
\bigskip
\csvloop{
file=Tabelle.csv,
no head,column count=4,
tabular=|p{3cm}|p{6cm}|r|p{2.5cm}|l|,
table head=\hline,
command=\csvlinetotablerow,
late after line=\\\hline
}
\bigskip
\csvreader[tabular=|p{3cm}|p{6cm}|r|p{2.5cm}|l|,
no head,column count=5,
table head=\hline,
late after line=\\\hline]%
{Tabelle.csv}{}%
{\csvlinetotablerow}%
\end{document}
EDIT: Als Erweiterung könnte man noch ein Tabellenlayout global in einem neuen Befehl festlegen und die "Personentabellen" ganz einfach mittels diesem Befehl und Argument zur Anzahl der Zeilen aufrufen:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage{csvsimple} %Package fuer CSV-Dateien
\begin{filecontents*}{Tabelle.csv}
Nachname,Vorname,Alter,E-Mail,Telefon
Mustermann,Max,30,m.max@web.de,0180/123123
\end{filecontents*}
\newcommand{\perstable}[1]{%
\csvreader[tabular=|p{3cm}|p{3cm}|r|p{2.5cm}|l|,
no head,column count=#1,
table head=\hline,
late after line=\\\hline]%
{Tabelle.csv}{}%
{\csvlinetotablerow}%
}
\begin{document}
\perstable{3}
\bigskip
\perstable{4}
\bigskip
\perstable{5}
\end{document}
Verfasst: Fr 10. Nov 2017, 08:45
von Ricky
Hallo markusv,
vielen Dank für deine Antwort!
Das ist aber leider nicht das, wonach ich gesucht habe. Vielleicht habe ich es schlecht beschrieben, entschuldige.
Ausgangssituation ist folgende:
Auf einer Seite soll eine gewisse Breite für Informationen aus einer CSV-Tabelle zur Verfügung stehen. Wie viele Spalten auf dieser Tabellenbreite eingenommen werden ist variabel. D.h. mal kann eine CSV-Datei zur Verfügung gestellt werden, in welcher 6 Spalten hinterlegt sind und ein anderes mal vielleicht nur 3 Spalten. Die zur Verfügung gestellt Breite soll jedoch immer komplett ausgenutzt werden (So wie in dem Bild, das ich hochgeladen habe). Dabei können die Merkmale der Spalten (und damit Anzahl der verwendeten Zeichen auch variieren)
Ich möchte also nicht für einzelne Spalten eine feste Breite vorgeben, sondern für die gesamte Tabellenbreite, z.B. 12cm. Bei einer CSV-Tabelle mit 3 Spalten bekommt jede Spalte 4cm zur Verfügung und bei einer CSV-Tabelle mit 6 Spalten bekommt jede Spalte 2cm zur Verfügung (bzw. wenn einzelne Spalten aufgrund der Zeichenanzahl eine größere Breite benötigen und manche Spalten eine geringere Breite, soll es so eingeteilt werden, dass es passt).
Natürlich ist man auf die 12cm dann auf eine maximale Zeichenanzahl begrenzt.
Ich hoffe, ich habe nun verständlicher beschrieben, was ich gerne umsetzen möchte? Sollte noch etwas unklar sein schärfe ich auch gerne noch einmal nach.
Vielen Dank und schöne Grüße
Ricky
Verfasst: Fr 10. Nov 2017, 09:05
von Gast
Es ist ungeschickt Bilder bitte in einer Größe einfügen, dass man anschließend einen Ultrabreit-4K-Monitor benötigt, damit die gesamte Seite auch ohne viel horizontales hin und her Scrollen gelesen werden kann. Außer natürlich man will alle von der Beantwortung abhalten, die nicht gerade entsprechende Hochleistungshardware zur Hand haben.
Also: Bitte verringert die Größe der Bilder vor dem Hochladen auf maximal 700 Pixel in der Breite!!!
Off-Topic: Bildgröße
Verfasst: Fr 10. Nov 2017, 09:07
von Gast
In
http://golatex.de/wie-haenge-ich-ein-bi ... 18411.html werden übrigens aus gutem Grund max. 640x480 Pixel empfohlen!
Verfasst: Fr 10. Nov 2017, 12:00
von markusv
In diesem Falle würde sich natürlich eine Lösung mit
tabularx anbieten, hier mit 15cm Breite, damit nichts überlappt:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage{csvsimple} %Package fuer CSV-Dateien
\usepackage{tabularx} %für X-Spalten und tabularx-Umgebung
\begin{filecontents*}{Tabelle.csv}
Nachname,Vorname,Alter,E-Mail,Telefon
Mustermann,Max,30,m.max@web.de,0180/123123
\end{filecontents*}
\newcommand{\perstable}[1]{%
\begin{tabularx}{15cm}{|*{#1}{X|}}
\hline
\csvreader[late after line=\\\hline,late after last line=\\\hline,
no head,column count=#1]
{Tabelle.csv}
{}
{\csvlinetotablerow}
\end{tabularx}
}
\begin{document}
\perstable{3}
\bigskip
\perstable{4}
\bigskip
\perstable{5}
\end{document}
Verfasst: Fr 10. Nov 2017, 12:13
von Ricky
Anonymous hat geschrieben:Es ist ungeschickt Bilder bitte in einer Größe einfügen, dass man anschließend einen Ultrabreit-4K-Monitor benötigt, damit die gesamte Seite auch ohne viel horizontales hin und her Scrollen gelesen werden kann. Außer natürlich man will alle von der Beantwortung abhalten, die nicht gerade entsprechende Hochleistungshardware zur Hand haben.
Also: Bitte verringert die Größe der Bilder vor dem Hochladen auf maximal 700 Pixel in der Breite!!!
Entschuldigung, du hast natürlich Recht. Da habe ich zu schnell geschossen und nicht aufgepasst. Hier nochmal das Bild komprimiert, leider kann ich meinen Beitrag nicht editieren:
@markusv:
Ich glaube das ist genau das, wonach ich gesucht habe. Schaue es mir heute Abend nochmal in Ruhe an und werde mich dann auch in tabularx mal einlesen.
Vielen vielen Dank!

Verfasst: Fr 10. Nov 2017, 18:17
von Johannes_B
Ich habe dann mal das Bild in Originalgröße an den OP angehängt. Auf dem goLaTeX-Server ist genug Platz, kein Grund externe Dienste zu nutzen.
Falls es dich interessiert, goLaTeX (und viele andere TeX-verwandte Webseiten) wird durch DANTE e.V. unterstützt (siehe linke Spalte). Auch du kannst Mitglied werden, eine
Schnuppermitgliedschaft für ein Jahr kostet nur 15 Euro.
Verfasst: Di 21. Nov 2017, 14:30
von Ricky
ich bins nochmal.
Der Code funktioniert soweit ganz gut. Idealerweise würde ich aber gerne die Anzahl der Spalten nicht fest im LaTeX-Code vorgeben, sondern diese automatisiert auslesen lassen.
Kannst du mir hierbei nochmal helfen @markusv ?
Verfasst: Di 21. Nov 2017, 15:09
von Ricky
Zusätzlich wäre es super, wenn sich die Spaltbreiten nicht alle gleich wären, sondern nur so breit wie der Inhalt. Das was dann noch zu der Gesamtbreite fehlt, soll dann gleichmäßig aufgeteilt werden.
Bsp:
6 Spalten mit 2cm, 2cm, 2.5cm, 3cm, 3.5cm und 4cm Inhalt. Gesamtbreite soll 23cm betragen.
-> Benötigte Gesamtbreite für die 6 Spalten: 17cm.
-> Gewollte Gesamtbreite: 23 cm
-> 23cm - 17cm = 6cm
-> 6cm / 6 Spalten = 1cm auf jede Spalte zusätzlich verteilen.