我用下面的类创建了个Excel文件,并写入了数据,
 class CExportExcel
    {
        System.IO.FileStream _wirter;        public CExportExcel(string strPath) 
        { 
            _wirter =  new  System.IO.FileStream(strPath, System.IO.FileMode.OpenOrCreate); 
       } 
         /// <summary> 
         /// 写入short数组 
        /// </summary> 
         /// <param name="values"></param> 
        private   void  _writeFile( short [] values) 
       { 
             foreach  ( short  v  in  values) 
           { 
                 byte [] b = System.BitConverter.GetBytes(v); 
                _wirter.Write(b, 0, b.Length); 
           } 
        } 
         /// <summary> 
        /// 写文件头 
         /// </summary> 
         public   void  BeginWrite() 
        { 
           _writeFile( new   short [] { 0x809, 8, 0, 0x10, 0, 0 }); 
       } 
         /// <summary> 
         /// 写文件尾 
        /// </summary> 
        public   void  EndWrite() 
       { 
            _writeFile( new   short [] { 0xa, 0 }); 
            _wirter.Close(); 
        } 
         /// <summary> 
         /// 写一个数字到单元格x,y 
         /// </summary> 
         /// <param name="x"></param> 
        /// <param name="y"></param> 
         /// <param name="value"></param> 
        public   void  WriteNumber( short  x,  short  y,  double  value) 
        { 
            _writeFile( new   short [] { 0x203, 14, x, y, 0 }); 
             byte [] b = System.BitConverter.GetBytes(value); 
           _wirter.Write(b, 0, b.Length); 
        } 
         /// <summary> 
        /// 写一个字符到单元格x,y 
         /// </summary> 
        /// <param name="x"></param> 
         /// <param name="y"></param> 
        /// <param name="value"></param> 
         public   void  WriteString( short  x,  short  y,  string  value) 
        { 
             byte [] b = System.Text.Encoding.Default.GetBytes(value); 
            _writeFile( new   short [] { 0x204, ( short )(b.Length + 8), x, y,0, ( short )b.Length }); 
            _wirter.Write(b, 0, b.Length); 
        } 用下面的方法读的时候确读不出来,难道这并不是真正的Excel文件吗?
        public static DataSet fLoadDataFromExcel(string paraFilePath)
        {
            try
            {
                EmployeeControl.MyTraceRecord.fWriteTrace("Enter fLoadDataFromExcel(" + paraFilePath + ")");
                string strTableName = "";
                strTableName = "sheet1";
                string strConn;
                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + paraFilePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
                OleDbConnection OleConn = new OleDbConnection(strConn);
                OleConn.Open();
                String sql = "SELECT * FROM  [" + strTableName + "$]";//可是更改Sheet名称,比如sheet2,等等                    OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
                DataSet OleDsExcle = new DataSet();
                OleDaExcel.Fill(OleDsExcle, strTableName);
                OleConn.Close();
                EmployeeControl.MyTraceRecord.fWriteTrace("Leave fLoadDataFromExcel(" + paraFilePath + ")");                 return OleDsExcle;
            }
            catch (Exception err)
            {
                EmployeeControl.MyTraceRecord.fWriteError("数据绑定Excel失败!失败原因:" + err.Message);
                return null;
            }
        }