如何让我的代码读取前缀为'(撇号)

不知道该怎么称呼那些准确的string数字? 无论如何,你会这样写着绿色三angular形的单元格: '3309

这是我的工作代码…

读取一个excel文件的模式,其表单后来从combobox中select(这里我使用一个backgroundworker线程):

 try { OleDbcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + IO_Name + ";Extended Properties='Excel 12.0 Xml; HDR = Yes; IMEX = 1'"); OleDbcon.Open(); SD.DataTable dt = OleDbcon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); OleDbcon.Close(); MaxSchema = dt.Rows.Count; for (int i = 0; i < dt.Rows.Count; i++) { String sheetName = dt.Rows[i]["TABLE_NAME"].ToString(); sheetName = sheetName.Substring(0, sheetName.Length - 1); cmbSheets.Invoke((MethodInvoker)delegate { cmbSheets.Items.Add(sheetName); }); backWorker2.ReportProgress(i); } } catch (Exception ex) { MessageBox.Show("Write Excel: " + ex.Message); } finally { GC.Collect(); GC.WaitForPendingFinalizers(); backWorker2.ReportProgress(100); } 

最后,我如何将数据带到datagridview:

 private void cmbSheets_SelectedIndexChanged(object sender, EventArgs e) { OleDbDataAdapter oledbDa = new OleDbDataAdapter("Select * from [" + cmbSheets.Text + "$]", OleDbcon); SD.DataTable dt = new SD.DataTable(); oledbDa.Fill(dt); DGVExcel.DataSource = dt; lblItem.Text = DGVExcel.RowCount.ToString(); } 

但是,我注意到,用撇号加前缀的数据,使数字成为文本,根本不被读取,并被视为他们被隐藏。 我怎样才能让我的方法可以读取string单元格?

我意识到这可能与我直接读取excel文件的模式有关,它可能自然会避免某些事情,如filter或Excel特定的东西,包括我的string单元格。 我目前阅读的方法对我来说是非常有效的,所以如果这个build议只是增加了现有的方法,那将是非常好的。

编辑我当前的连接string的扩展属性:

“; Extended Properties ='Excel 12.0 Xml; HDR = NO; IMEX = 1; TypeGuessRows = 0; ImportMixedTypes = Text';”);