You can use a minipage and size it appropriately where I have used the pgffor package was used just to create a simple loop to demonstrate the technique.
If you store the files in a CSV file as:
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
then you can use the the datatool package to read in the CSV file. This produces:

Notes:
Code: Demonstration
\documentclass{article}
\usepackage{pgffor}
\newcommand*{\NewAddress}[1]{%
\noindent
\begin{minipage}[t][0.12\textheight]{0.33\linewidth}
\begin{tabular}{@{}l@{}}
#1
\end{tabular}%
\end{minipage} % <-- Need space here
}
\begin{document}
\foreach \x in {1,...,128} {%
\NewAddress{%
firstname1 surname1 \
streetaddress1 \
zip1 city1 \
}%
}
\end{document}
Code: Use CSV File:
\documentclass{article}
\usepackage{pgffor}
\usepackage{datatool}
\usepackage{times}
\usepackage{filecontents}% <-- Commented out to prevent overwriting address.csv
\begin{filecontents}{address.csv}
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
Tim Cook, 1 Infinite Loop, Cupertino, CA 95014
Larry Page, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Sergey Brin, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Erich Schmidt, 1600 Amphitheatre Pkwy, Mountain View, CA 94043
Stephen P Jobs, 1 Infinite Loop, Cupertino, CA 95014
\end{filecontents}
\newcommand*{\NewAddress}[1]{%
\noindent
\begin{minipage}[t][0.12\textheight]{0.33\linewidth}
\begin{tabular}{@{}l@{}}
#1
\end{tabular}%
\end{minipage} % <-- Need space here
}
\begin{document}
\DTLloaddb[noheader,keys={Name,Address,City,StateAndZip}]{myDB}{address.csv}
\DTLforeach*{myDB}{\Name=Name,\Address=Address,\City=City, \StateAndZip=StateAndZip}{%
\NewAddress{%
\Name \
\Address, \
\City, \
\StateAndZip \
}%
}%
\end{document}