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