برای این کار میتوان از بستهٔ datatool
استفاده کرد.
فرض کنید قصد داریم به چندین شخص که مشخصات آنها در فایل csv
ذخیره شده است، دعوتنامه تهیه کنیم. برای مثال اطلاعات زیر در یک فایل csv
ذخیره شده است:
دستور \DTLforeach*
از بستهٔ datatool
با فرمت کلی زیر در دسترس است:
\DTLforeache*[condition]{db name}{assign list}{text}
حالت ستارهدار برای استفاده از دیتابیس در حالت read only
است (از اونجایی که ما قصد تغییر فایل دیتابیس رو نداریم، پس بهتره همون از حالت ستارهدار استفاده کنیم).
در قسمت [condition]
میتوان از عبارتهای شرطی استفاده کرد.
در قسمت {db name}
نام فایل دیتابیس رو وارد خواهیم کرد (البته برای همین هم یک دستور لازمه که در کد کمینه مشاهده میکنید).
در قسمت {assign list}
ستونها رو مشخص میکنیم.
و در قسمت {text}
متن خودمونو مینویسیم بههمراه استفاده از دادههای فایل csv
.
\begin{filecontents*}[overwrite]{data.csv}
FirstName, LastName, City
علی, احمدی, زنجان
وحید, مهدیون, سلطانیه
اصغر, محمدی, ابهر
\end{filecontents*}
\documentclass{article}
\usepackage{datatool}
\usepackage{xepersian}
\settextfont{Amiri}
\begin{document}
\DTLloaddb{dbAddress}{data.csv} % آدرس فایل دیتابیس در این خط مشخص میشود
\DTLforeach*{dbAddress}{%
\firstName=FirstName,
\lastName=LastName,
\city=City}%
{%
\thispagestyle{empty}
جناب
\textbf{\firstName~\lastName}
از
\city،
شما دعوت شدهاید. تشریف بیارید لطفاً!
\clearpage
}
\end{document}
مثالی دیگر از راهنمای بسته برای ایجاد جدول از دیتابیس:
\begin{filecontents*}[overwrite]{studentscores.csv}
FirstName,Surname,StudentNo,Score
John,"Smith, Jr",102689,68
Jane,Brown,102647,75
Andy,Brown,103569,42
Z\"oe,Adams,105987,52
Roger,Brady,106872,58
Clare,Verdon,104356,45
\end{filecontents*}
\documentclass{article}
\usepackage{datatool}
\begin{document}
\DTLloaddb{scores}{studentscores.csv}
\begin{table}[htbp]
\caption{Student scores}
\centering
\begin{tabular}{llr}
\bfseries First Name &
\bfseries Surname &
\bfseries Score (\%)%
\DTLforeach*{scores}{%
\firstname=FirstName,\surname=Surname,\score=Score}{%
\\% start new row
\firstname & \surname & \score}
\end{tabular}
\end{table}
\end{document}
خروجی: