使用OLEDB读取Excel,某些单元格读取不正确

我正在尝试读取一个Excel文件。 一些单元格包含公式,读作“#REF!”。 我只想要数值计算的单元格值,我不在乎公式。 有办法处理公式吗? 我可以在OLEDB中做这个或者我应该切换到互操作吗? 提前致谢。

var connectionString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=NO;IMEX=1""", fileName); string firstSheetName; using (OleDbConnection con = new OleDbConnection(connectionString)) { con.Open(); DataTable dt = con.GetSchema("Tables"); firstSheetName = dt.Rows[0]["TABLE_NAME"].ToString(); } var adapter = new OleDbDataAdapter("SELECT * FROM [" + firstSheetName + "]", connectionString); var ds = new DataSet(); adapter.Fill(ds, "anyNameHere"); var data = ds.Tables["anyNameHere"]; string cellValue = (string)data.Rows[i].ItemArray[4]; 

我试着给连接string添加“TypeGuessRows = 0; ImportMixedTypes = Text”。

 var connectionString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=NO;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""", fileName); 

这并没有帮助。

尝试这个。 使用getoledbschema而不是使用Get模式。

  OleDbConnection connExcel = new OleDbConnection(conStr); OleDbCommand cmdExcel = new OleDbCommand(); OleDbDataAdapter oda = new OleDbDataAdapter(); DataTable dt = new DataTable(); cmdExcel.Connection = connExcel; connExcel.Open(); DataTable dtExcelSchema; dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string SheetName=GettingSheetName(dtExcelSchema); connExcel.Close(); //Read Data from First Sheet connExcel.Open(); cmdExcel.CommandText = "SELECT * From [" + SheetName + "]"; oda.SelectCommand = cmdExcel; oda.Fill(dt); connExcel.Close();