The connection string should look like this:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcelfile.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
IMEX = 1 in the connection string is the part that needs to be processed by the column as a mixed data type. This should work fine, without having to edit the registry.
HDR = Yes - just mark the first row as column headings and not needed in your specific problem, however I included it anyway.
To always use IMEX = 1, this is a safer way to get data for mixed data columns.
Source: https://www.connectionstrings.com/excel/
Edit:
Here are the data I use:

Here is the result:

This is the exact code I used:
string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""; using (DbClass db = new DbClass(connString)) { var x = db.dataReader("SELECT * FROM [Sheet1$]"); while (x.Read()) { for (int i = 0; i < x.FieldCount; i++) Console.Write(x[i] + "\t"); Console.WriteLine(""); } }
DbClass is a simple wrapper that I made to make life easier. It can be found here:
http://tech.reboot.pro/showthread.php?tid=4713
source share