Solved

Reading Excel Using OLEDB when column header contain spaces and special characters

Posted on 2010-08-31
4
1,784 Views
Last Modified: 2013-11-27
I am using the following answer to a previous question.  I am using Visual Basic 2010.
Read Data from Excel using OLEDB
http://vb.net-informations.com/excel-2007/vb.net_excel_oledb.htm
=============
My problem is that I don't have control over the Excel sheet, and the column headers contain spaces and other non-alphanumeric characters.  I need to be able to refer to individual columns (fields), but I need help with the syntax, OR find a way to ignore the Excel column headers and be able to refer to the fields with the generic F1, F2, etc (which is what happens if row 1 is empty).

Typical column headers as an example:  "A: Address"  "B: Name"

And this will fail, but I don't know the right syntax to make it work...
("select 'A: Address' from [Sheet1$]", MyConnection)

Similarly, this will fail...
("select * from [Sheet1$] where 'B: Name' like 'Fred%'", MyConnection)



Imports System.Data

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, _

                ByVal e As System.EventArgs) Handles Button1.Click

        Try

            Dim MyConnection As System.Data.OleDb.OleDbConnection

            Dim DtSet As System.Data.DataSet

            Dim MyCommand As System.Data.OleDb.OleDbDataAdapter

            MyConnection = New System.Data.OleDb.OleDbConnection _

            ("provider=Microsoft.Jet.OLEDB.4.0;"  _

            " Data Source='c:\testfile.xls'; " _

             "Extended Properties=Excel 8.0;")

            MyCommand = New System.Data.OleDb.OleDbDataAdapter _

                ("select * from [Sheet1$]", MyConnection)

            MyCommand.TableMappings.Add("Table", "TestTable")

            DtSet = New System.Data.DataSet

            MyCommand.Fill(DtSet)

            DataGridView1.DataSource = DtSet.Tables(0)

            MyConnection.Close()

        Catch ex As Exception

            MsgBox(ex.ToString)

        End Try

    End Sub

End Class

Open in new window

0
Comment
Question by:motokent
  • 2
  • 2
4 Comments
 
LVL 58

Accepted Solution

by:
cyberkiwi earned 500 total points
ID: 33566376
If I am not mistaken it is not single-quoted, but square-bracketed.

("select * from [Sheet1$] where [B: Name] like 'Fred%'", MyConnection)
0
 

Author Comment

by:motokent
ID: 33566453
That's it!  Thank you for the quick response.  Before I close it... can you tell me if there's a way to tell it to ignore the field names (basically assume that row 1 contains data rather than column header)?
0
 
LVL 58

Assisted Solution

by:cyberkiwi
cyberkiwi earned 500 total points
ID: 33566600
Have a look  http://www.connectionstrings.com/excel

The connection string should contain HDR=No;
e.g.  Data Source='c:\testfile.xls';HDR=No;
0
 

Author Closing Comment

by:motokent
ID: 33566797
Excellent.  This helped a lot.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A basic question.. “What is the Garbage Collector?” The usual answer given back: “Garbage collector is a background thread run by the CLR for freeing up the memory space used by the objects which are no longer used by the program.” I wondered …
In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

943 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now