Die CSV-Eingabedatei hat eine variable Anzahl von Spalten. Die Daten werden der zweiten Zeile in der 2., 3., 4. und 5. Spalte hinzugefügt. Die SCV-Eingabedatei kann 3 oder 4 Spalten haben, sodass die obigen Daten auf eine unterschiedliche Anzahl von Spalten verteilt werden. Dies ist eine Variable, die sich in der Kopfzeile je nach CSV-Eingabedatei ändert.
Es ist notwendig, einen dynamischen Header zu definieren, der mit den eingegebenen CSV-Daten übereinstimmt.
Ich habe ein Beispiel für Latex-Code erstellt, bei dem bis auf den dynamischen Header alles an die CSV-Eingabedatei angepasst ist. Bei meinem Versuch ist ein Fehler aufgetreten, den ich nicht beheben konnte.
Mein Latex-Code:
\documentclass{article}
\begin{filecontents*}{file3.csv}
a,b,c
\end{filecontents*}
\begin{filecontents*}{file4.csv}
a,b,c,d
\end{filecontents*}
\usepackage{csvsimple-l3}
\usepackage{tabularray}
\usepackage{xcolor}
\usepackage{ifthen}
\usepackage{readarray}
\readarraysepchar{,}
\usepackage{etoolbox}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\GenerateHeader}{m}
{
\prg_replicate:nn {#1} { & }
}
\ExplSyntaxOff
\begin{document}
\newcommand{\InputCSV}[1]{%
\readdef{#1}\filedata%
\csvreader[%
no head,
tabularray={colspec={X[1,c,m]
*{\ncols}{X[1,c,m]} X[1,c,m]X[1,c,m]},
hlines,vlines,
width=\textwidth,
colsep=2.5pt,
rowsep=4.5pt,
row{1-2}={c,m,fg=black,bg=black!10,font=\bfseries\small},
cell{1}{1}={r=2}{c,m,font=\small\bfseries,bg=black!10},
cell{1}{2}={c=\ncols}{c,m,font=\small\bfseries,bg=black!10},
cell{1}{\ncols+2}={c=2}{c,m,font=\small\bfseries,bg=black!10},
expand=\expanded,
},
table head=Sample&Span over 3 or 4 columns
%&&&
\expanded{\GenerateHeader{\ncols}}
Last& \\
]{#1}
{}{%
\ifnumequal{\ncols}{4}{%
Name &\csvcoli&\csvcolii&\csvcoliii&\csvcoliv&Result & Erros
}{%
\ifnumequal{\ncols}{3}{%
Name &\csvcoli&\csvcolii&\csvcoliii&Result & Erros
}{}%
}
}%
}
\InputCSV{file3.csv}
\bigskip
The file consists of \ncols{} columns.
\end{document}
So sollte die Ausgabetabelle abhängig von der SCV-Eingabedatei aussehen.
Wenn jemand eine Idee hat, wie man dieses Problem lösen könnte, und ein Beispiel liefern kann, wäre das sehr hilfreich. Es ist wichtig, dass im angegebenen Beispiel die Pakete csvsimple-l3 und tabularray verwendet werden.