\csvreader의 동적 헤더

\csvreader의 동적 헤더

입력 CSV 파일에는 3개 또는 4개의 가변 개수의 열이 있습니다. 데이터는 2번째, 3번째, 4번째 및 5번째 열의 두 번째 행에 추가되어야 합니다. 그러면 위의 데이터가 다른 수의 열에 걸쳐 있게 됩니다. 입력 CSV 파일에 따라.

입력 CSV 데이터와 일치하는 동적 헤더를 정의해야 합니다.

수정할 수 없는 오류를 생성한 라텍스 코드의 예가 있습니다.

\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},
},
table head=Sample&Span over 3 or 4 columns 
%
\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

파일은 \ncols{} 열로 구성됩니다.

\end{문서}

이는 출력 테이블의 예상되는 모양입니다.

여기에 이미지 설명을 입력하세요 여기에 이미지 설명을 입력하세요

조언과 라텍스 예제가 큰 도움이 될 것입니다. csvsimple-l3 및 tabularrai 패키지는 Latex 코드에서 사용해야 합니다!

관련 정보