tags:

views:

2192

answers:

3

This is my code where I am trying to access first row, first column

     string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;
                                      Data Source=" + fileName + @";Extended Properties=""Excel 8.0;HDR=NO;""";
            string CreateCommand = "SELECT * FROM [Sheet1$]";
            OleDbConnection conn = new OleDbConnection(connectionString);

              conn.Open();
              OleDbCommand cmd = new OleDbCommand(CreateCommand, conn);
             //   cmd.ExecuteNonQuery();
               DbDataReader dr= cmd.ExecuteReader();

              int i = 0;

               while (dr.Read())
               {

                   string ab = dr.GetValue(i).ToString();
                   MessageBox.Show(ab);
                   i++;
               }
+1  A: 

Did you try HDR=YES ? That's what tells the OLEDB provider that you do have a header row.

http://connectionstrings.com/excel

Alan McBee
Yes. Initially I had tried HDR=Yes. But still getting wrong answer-'3' in both the cases
Sam, use HDR=YES and get the column-name from dr.GetFieldName (or similar)
Henk Holterman
Close. Not dr.GetFieldName, but dr.GetName(ordinal) where ordinal = dr.GetOrdinal("RowNo") and so on.
Alan McBee
A: 

Wouldn't you want to set the HDR=No?

Telling the OLEDB provider that the first row contains headers will cause the provider to use the headers as the names for the fields. (I'm thinking about dumping the info into a datatable, after which you get the information @ DataTable.Columns["[HEADER]"].Row....)

Since you're using a simple data reader, and you want the "header" fields to be read as data, specify that these are not headers.

corey broderick
A: 

// CODE TO SET UP THE CONNECTION BETWEEN EXCEL AND VS2005 // IN EXTENDED PROPERTIES SET HDR = YES FOR READING FIRST ROW AND HEADERS. // IN EXTENDED PROPERTIES SET IMEX = 1 TO READ INTERMIXED DATA.

            excelCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ExcelDBtrial.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
            excelCon.Open();
            exDA = new OleDbDataAdapter("Select * from [Sheet1$]", excelCon);
            exDA.Fill(exDT);

            //CODE TO ADD TABLE HEADERS INTO THE HEADERS COMBOBOX
            foreach (DataColumn dc in exDT.Columns)
                headerCB.Items.Add(dc.ToString());
NISHEED