I think this code may help you...
Dim _FileName As String = ""
Dim _xl As New Excel.Application
Dim _xlBook As Excel.Workbook
Dim _xlSheet1 As Excel.Worksheet
_xl.ScreenUpdating = False
_xlBook = _xl.Workbooks.Add()
_xlSheet1 = _xlBook.Worksheets.Add
_xlSheet1.Name = "My Sheet"
Dim i As Integer = 0
For i = _xl.Worksheets.Count To 2 Step -1
_xl.Worksheets(i).Select()
_xl.Worksheets(i).Delete()
Next
i = 1
For Each Tbl As DataTable In _Ds.Tables
If Tbl.Rows.Count = 0 Then Continue For
Dim _dt As DataTable = Tbl
Dim _xlPgSetup As Excel.PageSetup
Dim _dc As DataColumn
Dim _Cols As Integer = 0
Dim _Rows As Integer
_xlSheet1 = New Excel.Worksheet
_xlSheet1 = _xlBook.Worksheets(i)
_xlSheet1 = _xlBook.Worksheets.Add
_xlSheet1.Name = "My Sheet" & i
i += 1
Try
For Each _dc In _dt.Columns
_xlSheet1.Range("B1").Offset(0, _Cols).Value = GetHederValue(_dc.ColumnName.ToString.Trim)
_Cols += 1
Next
For _Rows = 0 To _dt.Rows.Count - 1
_xlSheet1.Range("B3").Offset(_Rows).Resize(1, _Cols).Value = _dt.Rows(_Rows).ItemArray()
Next
With _xlSheet1.Cells
.EntireColumn.AutoFit()
.EntireRow.AutoFit()
End With
For _Counter = 1 To _dt.Columns.Count + 1
_xlSheet1.Cells.Range(_xlSheet1.Cells(1, _Counter), _xlSheet1.Cells(2, _Counter)).Merge()
Next
Catch ex As Exception
Finally
End Try
_xlPgSetup = _xl.ActiveSheet.PageSetup
_xlPgSetup.PaperSize = Excel.XlPaperSize.xlPaperA3
_xlPgSetup.Orientation = Excel.XlPageOrientation.xlPortrait
Next
_xl.Worksheets(_xl.Worksheets.Count).Select()
_xl.Worksheets(_xl.Worksheets.Count).Delete()
_xl.ScreenUpdating = True
_ComponentNo = DataID & "_" & _ReportType
_xl.DisplayAlerts = False
_FileName = "C:\Filename.xls"
_xl.ActiveSheet.SaveAs(FileName:=_FileName)
_xl.DisplayAlerts = True
_xl.Quit()