现在excel结构如下:
序号     编码    录入时间
1         a    2006-10-18 14:38
2         b    2006-10-18 14:39
3         c    2006-10-18 14:39我不希望用oldb连接,因为每次换机器都要配置数据源,很麻烦,所以我想直接读取excel文件
在线等!解决问题就揭帖!

解决方案 »

  1.   

    创建一个Excel.Application
    然后从Excel表单中读取数据直接插入ListView
      

  2.   

    问题是我如何知道这个Sheet表中有多少行记录?
      

  3.   

    一个sheet表绝对不会超过65536行记录,因此,一行一行读取判断即可。
    还是使用连接串快啊,而且不需要设置数据源的啊。
    你可以使用OleDb连接串,而不是Odbc.
    连接串示例如下:
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source="c:\test\me.xls";Extended Properties="Excel 8.0"
      

  4.   

    参考:
    http://www.microsoft.com/china/community/Column/31.mspx
      

  5.   

    我尝试过你们的方法了
    string fileName;
    DataSet myDataSet= new DataSet();
    OpenFileDialog fileChooser=new OpenFileDialog();
    DialogResult result1=fileChooser.ShowDialog();
    fileChooser.CheckFileExists=false;
    if(result1==DialogResult.Cancel)
    {
    return;
    }
    fileName=fileChooser.FileName;
    if(fileName==""||fileName==null)
    {
    MessageBox.Show("不合法的文件名!","错误信息",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    else
    {
    string oleDBConnString = String.Empty;
    oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
    oleDBConnString += "Data Source=";
    oleDBConnString += fileName;
    oleDBConnString += ";Extended Properties=Excel 8.0;";
    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(oleDBConnString);
    conn.Close();
    conn.Open();
    ArrayList ary=new ArrayList();
    OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1]",conn);
    myCommand.Fill(myDataSet,"table1");
    }

    当它运行到myCommand.Fill(myDataSet,"table1");
    提示"Microsoft Jet 4.0 数据库引擎找不到"Sheet1" 对象"
    可是我明明是通过打开文件的方式获得的这个文件,怎么会找不到呢?