C# 连接 Excel
将   Excel   作为数据库连接   
 Excel为不固定路径名称的文件,C#连接它,通过Excel内的数据   进行相关处理   生成一个新Sheet表。   
 1.C#能不能遍历   Sheet 
 2.C#能不能遍历   Sheet   内的   首行 
 3.C#能不能在现有Excel创建新   Sheet 
 4.编码上是不是就和数据库一样操作   
 初学C#,十分感谢。
------解决方案--------------------C# WinForm中实现 
 开始需加: 
 using System.Data.OleDb; 
 在按钮中添加下列代码: 
 string cs =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\文件.xls;Excel 8.0;HDR=Yes;IMEX=1 "; 
 OleDbConnection CNN = new OleDbConnection(cs); 
 CNN.Open(); 
 //历遍Sheet,显示每个Sheet名。 
 DataTable ttable = cn.GetSchema( "Tables "); 
 foreach (DataRow row in ttable.Rows) 
    if (row[ "Table_Type "].ToString() ==  "TABLE ") 
        MessageBox.Show(row[ "Table_Name "]); 
 //历遍某一sheet的所有行,所有列,显示到dataGridView控件。 
 string ss =  "select * from [Sheet1$] " 
 OleDbCommand CMD = new OleDbCommand(ss, CNN); 
 OleDbDataReader RAD = CMD.ExecuteReader(); 
 DataTable Tab = new DataTable(); 
 for (int i = 0; i  < OleDbRAD.FieldCount; i++) 
     Tab.Columns.Add(OleDbRAD.GetName(i), OleDbRAD.GetFieldType(i)); 
 DataRow row; 
 while (OleDbRAD.Read()) 
 { 
     row = tab.NewRow(); 
     for (int i = 0; i  < tab.Columns.Count; i++) 
         row[i] = OleDbRAD.GetValue(i); 
     Tab.Rows.Add(row); 
 } 
 dataGridView1.DataSource = Tab; 
------解决方案--------------------public static ArrayList GetExcelSheet(string FileName) 
 		{ 
 			ArrayList ret=new ArrayList(); 
 			OleDbConnection Conn=null; 
 			try 
 			{				  				 
 				//连接到Excel; 
 				string strConn =  "Provider=Microsoft.Jet.OleDb.4.0; Data Source= "+FileName+ "; Extended Properties=Excel 8.0; "; 
 				Conn = new OleDbConnection(strConn); 
 				Conn.Open(); 
 				//获取Sheet的名字。 
 				DataTable schemaTable = Conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null); 
 				//schemaTable.Rows.Count值为Sheet的总数  				 
 				//注意schemaTable是从0开始,即第0个是第1个Sheet。第2列是Sheet名。 
 				for(int i=0;i <schemaTable.Rows.Count;i++) 
 				{ 
 					string s=schemaTable.Rows[i][2].ToString().Trim(); 
 					ret.Add(s.Remove(s.Length-1,1)); 
 				}  										 
 				Conn.Close();  				 
 			} 
 			catch(Exception e) 
 			{ 
 				LastErr=e.Message;				  				 
 			} 
 			return ret;   
 		}