I personally use the next code to see stand out data right into a data table , nevertheless the column title P.O.BOX has transformed to P#O#BOX within the data table.Can anybody shed some light on why this really is happening?

Dim FileName As String = "C:\abc.xls"
    Dim conn As Data.OleDb.OleDbConnection = Nothing
    Dim dt As New DataTable

                conn = New Data.OleDb.OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", FileName))
            Catch exOleDB As System.Data.OleDb.OleDbException
                If exOleDB.ErrorCode <> -2147467259 Then Throw exOleDB
                'try to open an Excel 2007 file
                conn = New Data.OleDb.OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", FileName))
            End Try
        Catch ex As Exception
            Throw New Exception("Can't read the import file. Try saving the file as an Excel 97-2003 Workbook (.xls). Also check the file permissions and impersonation settings.", ex)
        End Try
        Using selectedCMD As New Data.OleDb.OleDbCommand("select * from [Users$]", conn)
            Using da As New Data.OleDb.OleDbDataAdapter
                da.SelectCommand = selectedCMD
            End Using
        End Using
        If conn IsNot Nothing Then
            If conn.State <> ConnectionState.Closed Then conn.Close()
        End If
    End Try
    Return dt

The periods "." in P.O.Box aren't valid SQL column names therefore the Data Adapter makes them compliant. You will need to research the why's and what's from it

You will have to handle the populace of the dataset by hand rather than using fill(). You should use OpenSchema to fetch what they are called from the worksheets and posts in Stand out to create a SQL statement that qualifies all of the object names.

More particulars here