datatool:根据另一列的值获取特定值

datatool:根据另一列的值获取特定值

我确信这是显而易见的,但我却找不到解决方案......

给定一个以 CSV 格式存储的数据集:

ID,    col1,  col2, col3
KEY-1, foo    bar,  baz
KEY-2, alice, bob,  chuck

我想定义一个\getCol3{KEY-2}返回 的宏chuck。我被看似内部关键结构的东西绊倒了(而且我刚开始使用datatool)。

\DTLgetvalue{\thevalue}{data}{\therow}{\thecol}

是我认为正确的方向,但我无法为\therow和构建有效值\thevalue

答案1

你需要使用\DTLgetvalueforkey

\begin{filecontents*}{demo.csv}
ID,    col1,  col2, col3
KEY-1, foo,   bar,  baz
KEY-2, alice, bob,  chuck
\end{filecontents*}
\documentclass{article}
\usepackage{datatool}
\DTLloaddb{data}{demo.csv}
\newcommand*{\thevalue}{}
\newcommand*{\getCol}[2]{%
  \DTLgetvalueforkey{\thevalue}{col#1}{data}{ID}{#2}%
}
\getCol{3}{KEY-2}
\show\thevalue

在这里,我们ID使用参考键找到适当的行,使用参数找到该行#2

相关内容