Unfortunately, this appears to be a well known issue with the driver you are using. There are numerous accounts, on the internet, of people facing this issue. Rather than using a number, you could use the text representation; so you would write Sheet Two, instead of Sheet 2.
If you can't do this, you are left with these choices as far as I can see
- Live with the fact that the sheet name starts with an underscore
- Use a library to write the data into the spreadsheet instead of the OLEDB driver, which could end up being quite a rewrite
- Use a library to open up the spreadsheet and rewrite the sheet name to remove the leading underscore.
[EDIT]I have just seen a suggestion to change the connection string to use the IMEX settings as this may control how the name is created.
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=filename.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\"";