言語が何なのか知らんが…
データ量が少ないのが自明なら最初に全部読み込みつつ各列の最長の文字列を記録
記録した最長の長さに揃えながら吐き出せば良い

データ量がある程度多くなる可能性があるなら
幅計算のために一周読んで、その後もう一周で体裁整えつつ出力
…という手もあるが、処理時間を食うし
一部の「やたら幅をとるデータ」のために普通の幅のデータの見た目がスカスカ…
とかになりかねんので

そもそも各列の基本幅を仕様として決めてしまい
幅をオーバーするものに関しては例外的な体裁で出力を行うとか
最初の部分だけ出力して後部を省略、
省略したことが判るよう末尾を何らかの記号にする…とかかなあ
決まった方法はないような気がする