公司让写一个数据采集器,忙了3天没什么进展。先有基本代码 
   麻烦大虾看下, 
  主要是 dategridview  去绑定EXCEL的数据的时候,怎么都绑定不上。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2 ( ) 
        {
            InitializeComponent();
        }        private void button1_Click ( object sender, EventArgs e )
        {
            //打开一个文件选择框
            try
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title = "Excel文件";
                ofd.FileName = "";
                ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                //为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。
                //该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录
                ofd.Filter = "Excel文件(*.xls)|*.xls";
                ofd.ValidateNames = true;
                //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名
                ofd.CheckFileExists = true;  //验证路径有效性
                ofd.CheckPathExists = true; //验证文件有效性                //名称非空
                string strName = string.Empty;
                if ( ofd.ShowDialog() == DialogResult.OK )
                {
                    strName = ofd.FileName;
                }
                if ( strName == "" )
                {
                    MessageBox.Show("没有选择Excel文件!无法进行数据导入");
                    return;
                }
                //调用导入数据方法
                EcxelToDataGridView(strName, this.dataGridView1);
            }
            catch ( Exception ex )
            {
                string message = ex.Message;
                MessageBox.Show("message");
            }
            finally
            {            }
        }
        /// <summary>
        /// Excel数据导入方法
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="dgv"></param>
        public void EcxelToDataGridView ( string filePath, DataGridView dgv )
        {
            //this.dataGridView1.Columns [ 0 ].DataPropertyName;
            this.dataGridView1.AutoGenerateColumns = false;
            //根据路径打开一个Excel文件并将数据填充到DataSet中
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";
            //导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            DataSet ds = null;
            strExcel = "select  * from [sheet1$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            ds = new DataSet();
            myCommand.Fill(ds, "table1");            //根据DataGridView的列构造一个新的DataTable
            DataTable tb = new DataTable();
            foreach ( DataGridViewColumn dgvc in dgv.Columns )
            {
                if ( dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell) )
                {
                    DataColumn dc = new DataColumn();
                    dc.ColumnName = dgvc.DataPropertyName;
                    //dc.DataType = dgvc.ValueType;
                    //若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一
                    //个数据源那怕是空的DataTable
                    tb.Columns.Add(dc);
                }
            }            //根据Excel的行逐一对上面构造的DataTable的列进行赋值
            foreach ( DataRow excelRow in ds.Tables [ 0 ].Rows )
            {
                int i = 0;
                DataRow dr = tb.NewRow();
                foreach ( DataColumn dc in tb.Columns )
                {
                    dr [ dc ] = excelRow [ i ];
                    i++;
                }
                tb.Rows.Add(dr);
            }
            //在DataGridView中显示导入的数据
            dgv.DataSource = tb;
        }        //退出系统
        private void button3_Click ( object sender, EventArgs e )
        {
            Application.Exit();
        }
    }
}