goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Tabelle aus CSV Datei mit fester Breite

 

Ricky
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2017, 15:08     Titel: Tabelle aus CSV Datei mit fester Breite
  Antworten mit Zitat      
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?

Code • Öffne in Overleaf
\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]

rickyTabularResized.jpg
 Beschreibung:

Download
 Dateiname:  rickyTabularResized.jpg
 Dateigröße:  41.61 KB
 Heruntergeladen:  21 mal
rickyTabularOrignial.jpg
 Beschreibung:

Download
 Dateiname:  rickyTabularOrignial.jpg
 Dateigröße:  63.73 KB
 Heruntergeladen:  19 mal

markusv
Forum-Guru
Forum-Guru

Beiträge: 417
Anmeldedatum: 03.09.15
Wohnort: Leipzig
Version: ---
     Beitrag Verfasst am: 08.11.2017, 15:41     Titel:
  Antworten mit Zitat      
Paket auf CTANcsvsimple 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
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden

Ricky
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2017, 08:45     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 10.11.2017, 09:05     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 10.11.2017, 09:07     Titel: Off-Topic: Bildgröße
  Antworten mit Zitat      
In http://golatex.de/wie-haenge-ich-ei.....n-meine-frage-t18411.html werden übrigens aus gutem Grund max. 640x480 Pixel empfohlen!

markusv
Forum-Guru
Forum-Guru

Beiträge: 417
Anmeldedatum: 03.09.15
Wohnort: Leipzig
Version: ---
     Beitrag Verfasst am: 10.11.2017, 12:00     Titel:
  Antworten mit Zitat      
In diesem Falle würde sich natürlich eine Lösung mit Paket auf CTANtabularx 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
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden

Ricky
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2017, 12:13     Titel:
  Antworten mit Zitat      
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! Smile

Johannes_B
Moderator
Moderator


Beiträge: 4866
Anmeldedatum: 01.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2017, 18:17     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen

Ricky
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2017, 14:30     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 21.11.2017, 15:09     Titel:
  Antworten mit Zitat      
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.

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

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
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de