在查询EXCEL数据时,如果某一列的值有数字有文本,那最后我们使用查询语句获取的数据里就有可能读取不到某些文本值.这个原因我想在网上找找有一大段的.
其实要解决这个问题也很简单,只要在连接字符串中指示所有列都按文本来处理,这样就可以获取到所有的数据了.
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~/app_data/库存配件明细表.xls") + ";Extended Properties=\'Excel 8.0;IMEX=1; HDR=1;\'";
OleDbConnection objConn = new OleDbConnection(sConnectionString);
objConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [sheet1$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1, "XLData");
objConn.Close();
objConn.Dispose();
dt = objDataset1.Tables[0];
关键就是上面红色的那个属性设置.IMEX 表示是否强制转换为文本
HDR 有无字段,一般默认excel表中第1行的列标题为字段名,如姓名、年龄等