利用tex调用csv文件中的数据
文章目录
- 介绍
- 基本步骤
- 用法
- 输出全部数据
- 效果展示
- 遍历数据并自定义格式
- 效果展示
- 筛选数据(条件查询)
- 效果展示
- 排序数据
- 效果展示
介绍
\usepackage{datatool} 是 LaTeX 中一个用于处理数据的强大宏包,支持从外部数据文件(如 CSV、Excel 导出的文本文件等)读取数据,并在文档中灵活调用、筛选、排序和格式化数据,常用于生成表格、标签、报告等场景。
基本步骤
使用 datatool 通常分为三步:
- 加载宏包:在导言区引入 datatool。
- 读取数据:从外部文件(如 CSV)导入数据到数据库(database)。
- 调用数据:在文档中查询、筛选并输出数据。
用法
输出全部数据
Step1: 导入数据并定义名称
\DTLloaddb{mydata}{data.csv} % 定义数据库名称为“学生数据”,从 data.csv 读取
Step2: 展示数据
\DTLdisplaydb{mydata} % 自动生成包含所有行和列的表格
效果展示

\documentclass{article}
\usepackage{datatool}
\usepackage{xcolor}
\newcommand{\red}{\color{red}}
\newcommand{\blue}{\color{blue}}
\begin{document}\DTLloaddb{mydata}{data.csv}\DTLdisplaydb{mydata}

\documentclass{article}
\usepackage{datatool}
\usepackage{xcolor}
\usepackage{ifthen}
\usepackage{booktabs}
\newcommand{\red}{\color{red}}
\newcommand{\blue}{\color{blue}}
\begin{document}\DTLloaddb{mydata}{data.csv}\begin{tabular}{lll}
\toprule
Year & Title & Author \\
\midrule
\DTLforeach{mydata}{\Year=year, \Title=title, \Author=author}{%\ifthenelse{\Year>2018}{%\Year & \Title & \Author \\}{%% 不输出其他年份的行}%
}\\
\hline
\end{tabular}

遍历数据并自定义格式
用 \DTLforeach 循环遍历每一行,按需提取列数据
\DTLforeach[⟨选项⟩]{⟨表格名⟩}{⟨变量赋值⟩}{⟨循环体⟩}
效果展示

\documentclass{article}
\usepackage{datatool}
\usepackage{xcolor}
\newcommand{\red}{\color{red}}
\newcommand{\blue}{\color{blue}}
\begin{document}\DTLloaddb{mydata}{data.csv}\begin{itemize}\DTLforeach{mydata}% 数据库名{\year=year, \title=title, \author=author}% 定义变量映射(列名=变量名){% 循环体:输出每个变量\item the year is {\year}, and the title is {\title}, and the author is {\author} .}
\end{itemize}

筛选数据(条件查询)
\DTLforeach结合\usepackage{ifthen}可以实现条件的筛选。
效果展示
\documentclass{article}
\usepackage{datatool}
\usepackage{xcolor}
\usepackage{ifthen}
\newcommand{\red}{\color{red}}
\newcommand{\blue}{\color{blue}}
\begin{document}\DTLloaddb{mydata}{data.csv}\begin{itemize}
\DTLforeach{mydata}{\year=year, \title=title, \author=author}{\ifthenelse{\not \year<2018}{% 循环体\item The year is {\year}, the title is {\title}, author is {\author}.
}
{%条件为假什么也不做}
}\end{itemize}

\documentclass{article}
\usepackage{datatool}
\usepackage{xcolor}
\usepackage{ifthen}
\newcommand{\red}{\color{red}}
\newcommand{\blue}{\color{blue}}
\begin{document}\DTLloaddb{mydata}{data.csv}\begin{itemize}
\DTLforeach{mydata}{\year=year, \title=title, \author=author}{\ifthenelse{ \year>2013 \AND \year<2025}{% 循环体\item The year is {\year}, the title is {\title}, author is {\author}.
}
{%条件为假什么也不做}
}\end{itemize}

排序数据
\DTLsort{排序字段}{数据库名}
效果展示
\DTLsort{year=descending}{mydata} % 按“year”降序排序(ascending 为升序)
\DTLdisplaydb{mydata}

