von Jona » Di 13. Okt 2020, 22:25
Hallo Zusammen,
ich hoffe, bei euch Hilfe für folgende Fragestellung zu bekommen:
Ich würde gerne mittels des CSV-Simple-Packages Tabellen automatisch erstellen lassen, dabei soll eine bestimmte Formatierung & Filterung vorgenommen werden. Als Datenspalten habe ich für ein Minimalbeispiel Name & Nummer gewählt. Umgesetzt habe ich schon eine Filterung nach dem Ersten Buchstaben des Namens. Der zweite Schritt wäre eine, sofern dies irgendwie umsetzbar ist, bei gleichem Namen und unterschiedlicher Nummer eine "Multirow" mit der entsprechenden Größe zu erstellen. (Dies ist für mich nun der wichtigste Schritt). Weiterhin wäre es schön, aber nicht essentiell, wenn sich die Einträge automatisch sortieren würden (aber da hab ich eine Anleitung für). Schließlich wäre es auch noch schön, wenn eine Box, die aufgrund des Filters keinen Inhalt hat, nicht als "Box-Leiche" erscheint. Auch dort weiß ich nicht wie ich rangehen soll.
Dabei habe ich folgendes Minimalbeispiel erstellt, ich hoffe ich habe es genug "entschlackt":
\documentclass[paper=a6, fontsize=6pt, headings=small, oneside, automark]{scrreprt}
\usepackage[left=0.5cm,right=1cm,top=1.cm,bottom=0.5cm]{geometry}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{multicol}
\usepackage{multirow}
\usepackage[most,many]{tcolorbox}
\usepackage{csvsimple}
\usepackage{xltabular}
\usepackage{xstring}
\newcommand{\NameFilter}[2]{\begin{tcolorbox}[breakable, enhanced, left=0.0mm,right=0.0mm,top=0.0mm, bottom=0mm, boxsep=0.5mm,
title=\setlength{\LTpre}{-0.0cm}
\begin{longtable}{@{}p{4cm}p{1.8cm}@{}}
Name & Nummer
\end{longtable}] % Überschrift ]
\setlength{\LTpre}{-0.0cm}
\csvreader[
separator=semicolon,
filter test={\StrLeft{\Name}{1}[\firstchar]%
\IfStrEq{\firstchar}{#2}},
longtable={@{}p{4cm}p{1.8cm}@{}},
]
{#1}%Quelle
{1=\Name,2=\Nummer}
{\Name & \Nummer}
\end{tcolorbox}
}
\begin{filecontents*}{test.csv}
name;nummer
Adam;1245
Adam;2345
Adam;5678
Mueller;2567
Adam;3456
Adalbert;5555
Meier;1111
\end{filecontents*}
\begin{document}
\NameFilter{test.csv}{A}
\NameFilter{test.csv}{C}
\NameFilter{test.csv}{M}
\end{document}
Aussehen soll die Ausgabe dann inetwa so:
- Bildschirmfoto von 2020-10-13 21-58-19.png (21.85 KiB) 13230 mal betrachtet
Sollte das besser mit einem anderen Paket als csvsimple, bsp. mit datatool umzusetzen sein, wäre ich auch für den Hinweis sehr dankbar.
Ich freue mich schon auf eure Hilfe
Grüße J
- Dateianhänge
-
- document.tex
- (1.14 KiB) 298-mal heruntergeladen
Hallo Zusammen,
ich hoffe, bei euch Hilfe für folgende Fragestellung zu bekommen:
Ich würde gerne mittels des CSV-Simple-Packages Tabellen automatisch erstellen lassen, dabei soll eine bestimmte Formatierung & Filterung vorgenommen werden. Als Datenspalten habe ich für ein Minimalbeispiel Name & Nummer gewählt. Umgesetzt habe ich schon eine Filterung nach dem Ersten Buchstaben des Namens. Der zweite Schritt wäre eine, sofern dies irgendwie umsetzbar ist, bei gleichem Namen und unterschiedlicher Nummer eine "Multirow" mit der entsprechenden Größe zu erstellen. (Dies ist für mich nun der wichtigste Schritt). Weiterhin wäre es schön, aber nicht essentiell, wenn sich die Einträge automatisch sortieren würden (aber da hab ich eine Anleitung für). Schließlich wäre es auch noch schön, wenn eine Box, die aufgrund des Filters keinen Inhalt hat, nicht als "Box-Leiche" erscheint. Auch dort weiß ich nicht wie ich rangehen soll.
Dabei habe ich folgendes Minimalbeispiel erstellt, ich hoffe ich habe es genug "entschlackt":
[code]\documentclass[paper=a6, fontsize=6pt, headings=small, oneside, automark]{scrreprt}
\usepackage[left=0.5cm,right=1cm,top=1.cm,bottom=0.5cm]{geometry}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{multicol}
\usepackage{multirow}
\usepackage[most,many]{tcolorbox}
\usepackage{csvsimple}
\usepackage{xltabular}
\usepackage{xstring}
\newcommand{\NameFilter}[2]{\begin{tcolorbox}[breakable, enhanced, left=0.0mm,right=0.0mm,top=0.0mm, bottom=0mm, boxsep=0.5mm,
title=\setlength{\LTpre}{-0.0cm}
\begin{longtable}{@{}p{4cm}p{1.8cm}@{}}
Name & Nummer
\end{longtable}] % Überschrift ]
\setlength{\LTpre}{-0.0cm}
\csvreader[
separator=semicolon,
filter test={\StrLeft{\Name}{1}[\firstchar]%
\IfStrEq{\firstchar}{#2}},
longtable={@{}p{4cm}p{1.8cm}@{}},
]
{#1}%Quelle
{1=\Name,2=\Nummer}
{\Name & \Nummer}
\end{tcolorbox}
}
\begin{filecontents*}{test.csv}
name;nummer
Adam;1245
Adam;2345
Adam;5678
Mueller;2567
Adam;3456
Adalbert;5555
Meier;1111
\end{filecontents*}
\begin{document}
\NameFilter{test.csv}{A}
\NameFilter{test.csv}{C}
\NameFilter{test.csv}{M}
\end{document}[/code]
Aussehen soll die Ausgabe dann inetwa so: [attachment=1]Bildschirmfoto von 2020-10-13 21-58-19.png[/attachment]
Sollte das besser mit einem anderen Paket als csvsimple, bsp. mit datatool umzusetzen sein, wäre ich auch für den Hinweis sehr dankbar.
Ich freue mich schon auf eure Hilfe :D
Grüße J