我想从一个 CSV 文件中获取更多表格,以便表格有一个标题并且只有一行来自输入 CSV 文件。
第一个表格包含 CSV 文件的标题和第一行,第二个表格包含 CSV 文件的标题和第二行,依此类推,直到 CSV 文件的最后一行。表格的数量等于 CSV 文件中的行数。
我做了一个示例,并设法生成了与 CSV 文件的行数相等的表格数量,但不幸的是,我只有标题。我在 CSV 文件中缺少所有表格(每行一行)的数据。
重要的是,在给定的示例中使用了 csvsimple-l3 包
\documentclass{article}
\begin{filecontents*}{data9.txt}
1,A,6,Euploid,XX
2,B,7,Euploid,XX
3,C,8,Euploid,XX
4,D,9,Euploid,XXY
5,E,4,Euploid,XX
6,F,3,Euploid,XX
\end{filecontents*}
\usepackage{readarray}
\readarraysepchar{,}
\usepackage{csvsimple-l3}
\usepackage{tabularray}
\usepackage{pgffor}
\begin{document}
\newcommand{\customtable}[1]{%
\readdef{#1}\filedata
\let\myrowcount\nrows
%
\foreach \i in {1,...,\myrowcount}{%
\csvreader[%
generic collected table = longtblr,
generic table options = {[
label = none
]{
colspec={*{5}{X[1,c]}},
vlines,
hlines,
width=\textwidth,
}},
no head,
filter test={\ifnum\thecsvrow=\i\fi},
table head ={Col 1&Col 2&Col 3&Col 4 &Col 5\\}
]%
{#1}{}%
{\ifnum\thecsvrow=\i
\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv
\else \fi}
}
}
\customtable{data9.txt}
The number of columns is: \myrowcount.
\end{document}
如果有人能帮忙并提供一个例子,那将会很有用,我将非常感激。
答案1
虽然这个答案可能对 OP 没有直接用处,因为指定了“在给定的示例中使用 csvsimple-l3 包非常重要”,但我仍然向其他读者展示了如何直接使用该readarray
包来实现这一点。
\begin{filecontents*}[overwrite]{data9.txt}
1,A,6,Euploid,XX
2,B,7,Euploid,XX
3,C,8,Euploid,XX
4,D,9,Euploid,XXY
5,E,4,Euploid,XX
6,F,3,Euploid,XX
\end{filecontents*}
\documentclass{article}
\usepackage{readarray,pgffor}
\readarraysepchar{,}
\parskip 12pt
\begin{document}
\def\mheaderdat{Col1,Col2,Col3,Col4,Col5}
\readarray*\mheaderdat\mheader[-,5]
\typesetarray\mheader
\readdef{data9.txt}\mdatadat
\readarray*\mdatadat\mdata[-,\ncols]
\typesetarray\mdata
\renewcommand\typesetrowsepchar{\\\hline}
\renewcommand\typesetcolsepchar{&}
\initarray\mtable[2,5]
\foreach\z in{1,...,\nrows}{%
\mergearray\mdata\mtable[\numexpr3-\z,1]
\mergearray\mheader\mtable[1,1]
\begin{tabular}{|c|c|c|c|c|}
\hline
\typesetarray\mtable\\
\hline
\end{tabular}\par
}
\end{document}