Io di solito carico i dati in una tabella in un dataset e poi passo la tabella come sorgente dati alla datagridview, risulta essere molto veloce ma a quel punto la formattazione la devi gestire dopo, un altro sistema potrebbe essere quello di sospendere il layout prima di compilare e formattare la tabella, ovviamente alla fine della procedura lo devi ripristinare.
'Sospensione layout
Me.SuspendLayout()
'Formattazione datagridview
[...]
'Ripristino layout
Me.ResumeLayout()