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}

在表格中使用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}
