% This file is embedded in datatool-user.pdf version 3.4.4 2026-07-31
% Example 106 Sorting CSV Data Using \dtlsort by Organisation, Surname and Forename With Replacements
% Label: "ex:dtlsortcsvrepl"
% arara: pdflatex
% arara: pdfcrop
\documentclass[12pt]{article}
\pagestyle{empty}
\begin{filecontents}[noheader,overwrite]{customers.csv}
Id,Organisation,Surname,Forename,Email,Age
1,,Parrot,Polly,pp@example.com,42
2,University of Somewhere,Canary,Mabel,mc@example.com
3,University of Somewhere,Zebra,Zoë,zz@example.com,21
4,Zinnia Florestry,Arara,José,ja@example.com,42
5,,Duck,Dickie,dd@example.com,
6,Newt Fellowship,Axolotl,Lizzie,la@example.com
7,Avian Emporium,Canary,Fred,fc@example.com,19
8,Newt Fellowship,,Molgina,m@example.com
9,,Mander,Sally
10,Élite Emporium,Fant,Eli,ef@example.com,101
\end{filecontents}

\usepackage{datatool}
\DTLsetup{store-datum,default-name=customers}
\DTLread{customers.csv} 
\begin{document}
% replacements are only used for null not empy values. Compare with example "ex:sortcsvrepl" that uses \DTLsortdata
\dtlsort[Surname,Forename]{Organisation,Surname,Forename}{customers}{\dtlwordindexcompare} 

\DTLaction{display} 
\end{document}
