下面是写读取Excel的一段代码
----------------------------------------------------------------
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+openFileDialog1.FileName.ToString()+";Extended Properties=Excel 8.0";
                OleDbConnection myConn = new OleDbConnection(strCon);
                string strCom = " SELECT * FROM [Sheet1$] ";
                myConn.Open();
-----------------------------------------------------------------
这里string strCom = " SELECT * FROM [Sheet1$] ";
Sheet1$这个名字假如变了  
比如用户自己改成了 page1 
或者用户把内容写在了 Sheet2$ 中
这里改怎么解决这几个问题呢???

解决方案 »

  1.   

    //连接Excel文件,读入myDstaSet,serverpath是Excel文件有服务器中路径
                                String strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1'", serverpath);
                                OleDbConnection Excel_conn = new OleDbConnection(strConnectionString);
                                Excel_conn.Open();
                                DataTable dtExcelSchema = Excel_conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//建立连接Excel的数据表
                                string SheetName = "";
                                SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();//取出第一个工作表我名称
                                Excel_conn.Close();                            string query = "SELECT *   FROM " + "[" + SheetName + "]";//查询Excel字符串
                                OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query, Excel_conn);
                                DataSet myDataSet = new DataSet();
                                Excel_conn.Open();
                                oleAdapter.Fill(myDataSet, "Excel_Sheet1");
                                Excel_conn.Close();
      

  2.   

    知道是那个Sheet就可以解决了。
     public static string[] GetExcelSheetNames(string FileName)
            {
                //OleDbConnection objConn = null;
                OleDbConnection objConn = new OleDbConnection();
                System.Data.DataTable dt = null;            try
                { 
                    String connString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
                                "Data Source=" + FileName + ";" +
                                "Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'";                objConn.ConnectionString = connString;
                    objConn.Open();                dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);                if (dt == null)
                    {
                        return null;
                    }                string[] excelSheets = new string[dt.Rows.Count];
                    int i = 0;                // Add the sheet name to the string array.   
                    foreach (DataRow row in dt.Rows)
                    {
                        excelSheets[i] = row["TABLE_NAME"].ToString();
                        i++;
                    }                // Loop through all of the sheets if you want too...   
                    for (int j = 0; j < excelSheets.Length; j++)
                    {
                        // Query each excel sheet.   
                    }                return excelSheets;
                }
                catch (Exception ex)
                {
                    return null;
                }
                finally
                {
                    // Clean up.   
                    if (objConn != null)
                    {
                        objConn.Close();
                        objConn.Dispose();
                    }
                    if (dt != null)
                    {
                        dt.Dispose();
                    }
                }
            }       }