用c#的OLEDB导入Excel到数据库产生科学计数法问题解决

string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=NO;IMEX=1';";

System.Data.OleDb.OleDbConnection myConn = new System.Data.OleDb.OleDbConnection(strCon);
  myConn.Open();
  //获取excel第一标签名 
  System.Data.DataTable schemaTable = myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
  string tableName = schemaTable.Rows[0][2].ToString().Trim();//标签名  
  string strCom = "SELECT * FROM [" + tableName + "]";//查询语句  
  System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, myConn);

  //得到自己的DataSet对象  
  myCommand.Fill(myDataSet);
  //关闭此数据链接  
  myConn.Close();


Excel文件是xlsx格式的2007的
本来是103150122226
用上面的方法读出来就显示成1.0315012223e+011

我说要办法就是在不改动Excel文件的条件啊。因为Excel文件是自动生生的。会有很多不可能一个一个改。


网上找到一个http://www.cnblogs.com/alein/archive/2008/11/04/1326604.html

方法是连接字符串改成string strCon ="Provider=Microsoft.ACE.OleDb.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";

而且HDR必须为YES,如果改成NO即不可用

 

如果提示未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序,说明没有安装office2007

安装一个组件就成了,叫AccessDatabaseEngine 2007 Office system 驱动程序:数据连接组件,下载地址如下
http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

posted @ 2012-05-14 17:15  为乐而来  阅读(1333)  评论(0编辑  收藏  举报