为什么我在64位开发机器上安装的32bit的Office2010,用下面的连接字符串打开xls和xlsx格式都没有问题,但是在另外一台机器上安装的office2007就出问题呢,07的xlsx能够导入,但是03xls的导入老是报“未指定错误”?我的不是web开发,是桌面程序。
1 /// <summary> 2 /// 返回Excel数据源 3 /// </summary> 4 /// <param name="filename">文件路径 5 /// <returns></returns> 6 public static DataSet ExcelToDataSet(string filePath, string Suffix) 7 { 8 try 9 { 10 string strConn = ""; 11 if (Suffix == "xls") 12 { 13 strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0;"; 14 } 15 else if (Suffix == "xlsx") 16 { 17 strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"";//HDR=Yes表示有列名 返回的时候不包括第一行数据 要想返回可设置成No 18 } 19 OleDbConnection OleConn = new OleDbConnection(strConn); 20 OleConn.Open(); 21 String sql = "SELECT * FROM [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等 22 23 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); 24 DataSet OleDsExcle = new DataSet(); 25 OleDaExcel.Fill(OleDsExcle, "Sheet1"); 26 OleConn.Close(); 27 return OleDsExcle; 28 } 29 catch (Exception err) 30 { 31 System.Windows.Forms.MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message); 32 } 33 return null; 34 }
版本声明。strConn
什么意思?程序重启一下就都有没有问题了,这到底是怎么回事?