我用的是vs2015,wpf程序,没有语法错误,代码针对的是excel2003,而我的是excel2003,文件名是stu.xls,一切都吻合,完全不知道为何报错 private void button_leadIn_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Microsoft Excel files(*.xls)|*.xls;*.xlsx";//过滤一下,只要表格格式的 ofd.InitialDirectory = "c:\\"; ofd.RestoreDirectory = true; ofd.FilterIndex = 1; ofd.AddExtension = true; ofd.CheckFileExists = true; ofd.CheckPathExists = true; if (ofd.ShowDialog() == true) { string DBString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + ofd.FileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";//这是excel2003的读取 OleDbConnection con = new OleDbConnection(DBString); con.Open(); DataTable datatable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //获取表单,原始的是:Sheet1,Sheet2,Sheet3 for (int i = 0; i < datatable.Rows.Count; i++) { //获取表单的名字 String sheet = datatable.Rows[i][2].ToString().Trim(); OleDbDataAdapter ole = new OleDbDataAdapter("select * from [" + sheet + "]", con); DataSet ds = new DataSet(); ole.Fill(ds); //输出表格里面的内容,我这里就两列数据,如果数据列数不确定就需要写循环了:Rows.Count foreach (DataRow col in ds.Tables[0].Rows) { Console.WriteLine(col[0].ToString()); Console.WriteLine(col[1].ToString()); } } con.Close(); }
后缀.xls,excel2003,还出错,真是奇了怪了
这么说要换成2007.