No es tan simple como creo te imaginas, hay que manipular la hoja de excel desde el mismo codigo de tu aplicasión, para definir, tipo de letra tamaño, color, ancho de columnas, saltos de pagina, etc, etc.
Si usaras reportes tipo crystal report ahi si que tienes la opción a exportar de forma mas sencilla, pero claro esto ya tiene su coste
Busca sobre Microsoft.Office.Interop
un ejemplo sencillo para qu ete hagas una idea, aqui se genera una hoja de excel agregando los datos de la "columna1" de un datagridview1
Código:
Private Sub GeneraExcel()
Dim xl As New Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook = xl.Workbooks.Add(System.Reflection.Missing.Value)
Dim ws As Excel.Worksheet
ws = wb.ActiveSheet
With xl.Cells(1, 1)
.value = "Columna1"
.Font.ColorIndex = 2
.Borders.ColorIndex = 2
.Interior.ColorIndex = 16
.Font.Bold = True
.Font.Size = 10
.Borders.ColorIndex = 2
End With
Dim ran As Excel.Range
Dim letra As Double = 10
For i As Integer = 0 To Datagridview1.Rows.Count - 1
Dim lin As Integer = i + 2
ran = ws.Range("A" & lin & "")
ran.Value = Datagridview1.Rows(i).Cells("Columna1").Value
ran.Font.Size = letra
Next
wb.SaveAs("C:\ReporteExcel.xls")
Dim Resp As String = MsgBox("¿Desea imprimir el informe de inventario?", MsgBoxStyle.OkCancel, "Confirmar impresión")
If Resp = vbOK Then
ws.PrintOut()
End If
wb.Close()
xl.Quit()
ws = Nothing
wb = Nothing
xl = Nothing
End Sub
Esto para Excel, para pdf, y demas formatos hay que usar diferentes referencias.