|
Tabelle aus CSV Datei mit fester Breite |
|
Ricky |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2017, 15:08
Titel: Tabelle aus CSV Datei mit fester Breite
|
 |
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?
Vielen Dank im Voraus!
Gruß
Ricky[/img]
Beschreibung: |
|
 Download |
Dateiname: |
rickyTabularResized.jpg |
Dateigröße: |
41.61 KB |
Heruntergeladen: |
153 mal |
Beschreibung: |
|
 Download |
Dateiname: |
rickyTabularOrignial.jpg |
Dateigröße: |
63.73 KB |
Heruntergeladen: |
136 mal |
|
|
|
markusv |

Forum-Meister
|
 |
Beiträge: 658
|
 |
|
 |
Anmeldedatum: 03.09.15
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2017, 15:41
Titel:
|
 |
|
 |
|
csvsimple bietet viele Möglichkeiten, Tabellen indivivduell zu gestalten. Also auch gerne mal in der Doku lesen. Aus https://tex.stackexchange.com/quest.....vautotabular-of-csvsimple habe ich mal drei Varianten zusammengestellt und auf dein Problem abgeändert:
Code • Öffne in Overleaf | \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:
Code • Öffne in Overleaf | \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} |
_________________
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.
Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de
|
|
|
Ricky |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2017, 08:45
Titel:
|
 |
|
 |
|
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
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2017, 09:05
Titel:
|
 |
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!!!
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2017, 09:07
Titel: Off-Topic: Bildgröße
|
 |
|
|
markusv |

Forum-Meister
|
 |
Beiträge: 658
|
 |
|
 |
Anmeldedatum: 03.09.15
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2017, 12:00
Titel:
|
 |
In diesem Falle würde sich natürlich eine Lösung mit tabularx anbieten, hier mit 15cm Breite, damit nichts überlappt:
Code • Öffne in Overleaf | \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} |
_________________
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.
Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de
|
|
|
Ricky |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2017, 12:13
Titel:
|
 |
Anonymous hat Folgendes 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!
|
|
|
Johannes_B |

Moderator
|
 |
Beiträge: 5038
|
 |
|
 |
Anmeldedatum: 01.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2017, 18:17
Titel:
|
 |
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.
_________________
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
|
|
|
Ricky |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.11.2017, 14:30
Titel:
|
 |
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 ?
|
|
|
Ricky |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.11.2017, 15:09
Titel:
|
 |
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.
|
|
|
|
|
Options and Permissions
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten Du kannst Dateien in diesem Forum herunterladen
|
|