LaTeX中使用CSV数据文件实现数据与排版分离

CSV数据

name,math,cprog,ds,db,avg
张三,60,78,68,80,71.63
李四,76,63,68,97,75.83
王五,77,73,78,68,73.83
马六,85,73,76,67,75.22
赵七,92,85,92,90,89.83
吴八,90,80,92,90,88

引入宏包

\usepackage{databar}
%\usepackage{datatool}%已引用databar时,可不引用datatool
\usepackage{booktabs}

载入数据

%载入数据文件,可以在使用前任何位置载入
\DTLloaddb{studb}{DATA.CSV}
\DTLcomputebounds{studb}{math}{avg}{\minM}{\minA}{\maxM}{\maxA}

列表环境中使用CSV文件中的数据

%在列表环境中使用CSV文件中的数据
\begin{enumerate}
	\DTLforeach*{studb}
	{\Name=name,\Math=math,\CProg=cprog,\DS=ds,\DB=db,\Avg=avg}%为各列指定宏名称
	{\item \Name{}成绩是:高等数学\Math{}分、C语言程序设计\CProg{}分、数据结构\DS{}分、数据库\DB{}分,平均成绩是:\Avg}
\end{enumerate}

image-20210111075947586

在表格中使用CSV文件中的数据

%在表格中使用CSV文件中的数据
\begin{table}[htb]
	\centering
	\caption{学生成绩单2}
	\begin{tabular}{cccccc}
		\toprule
		姓名 & 高等数学 & C语言 & 数据结构 & 数据库 & 平均成绩 \\
		\midrule
			\DTLforeach*{studb}
		{\Name=name,\Math=math,\CProg=cprog,\DS=ds,\DB=db,\Avg=avg}%为各列指定宏名称
		{
			\DTLiffirstrow{}{\tabularnewline}%
			\Name{} & \Math{} & \CProg{} & \DS{} & \DB{} & \Avg}\\
		\bottomrule
	\end{tabular}
\end{table}

image-20210111081026588