有一个EXCEL 有2000行  每行20列! 要读到页面上显示出来! 求高效方法! 
      时间应控制在5min左右! 当然越快越好! 
谢谢各位

解决方案 »

  1.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
    OleDbDataAdapter ada = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openFileDialog1.FileName + ";Extended Properties=Excel 8.0;");
    DataTable dt = new DataTable();
    try
    {
    ada.Fill(dt);
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    dataGrid1.DataSource = dt;
    }
    }
    测试2000行38列用1.5秒。
      

  2.   

    我在做MIS金质打印通时的Excel功能模板时,很多朋友都反应非常方便。因为 给网通做项目要导数据,随便找个表就有几十万的数据,很多同事说把它数据打开后分页放到DataTable分开导出,我觉得这样不好,一是内存占用量大,二是每次分页打开数据都会占有一些时间。
    我的解决办法是让Excel自动处理,操作Excel后用C#调用VBA打开数据库用快表,结果30万的数据只花15秒,而且可以指定每个sheet的装载多少数据。
      

  3.   

    vba,没有用过,能多透露一点吗。
      

  4.   

    ***GoldPrinter.ExcelExpert(MIS金质打印通之Excel专版)***
    1、如何将各版本Excel(COM类型库) 转换生成.Net公共语言运行库程序集如Interop.Excel.dll
    2、如何引用Excel库或已生成的程序集
    3、创建Excel实例
    4、打开Excel工作薄工作表和模板
    5、增、删、改、插入、定位、重命名工作表
    6、获取活动工作表指定范围单元格及带区
    7、读、写单元格内容
    8、向带区中写内容 9、单元格合并
    10、字体及颜色
    11、边框及网格线
    12、保存、另存
    13、打印、预览
    14、彻底关闭Excel进程
    15、综合应用,通打天下报表
    ...需要的朋友:
    Email:[email protected]  QQ:150439795
    更多源码:www.webmis.com.cn
      

  5.   

    作为一个数据库打开是最快的            SqlConnection conn = new SqlConnection("Data Source=(local);database=Northwind;user id =sa;pwd=york");
                string strSql = @"select * from 
                                OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
                                ,'Excel 5.0;HDR=YES;DATABASE=e:\book1.xls',a$)";
                SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
                DataSet ds = new DataSet();
                da.Fill(ds);
                customerGrid.DataSource = ds.Tables[0];
      

  6.   

    把EXCEL作为一个数据库来操作应该还可以的吧?
      

  7.   

    5min? 5 秒就够了!
    http://spaces.msn.com/members/tiaoci/
      

  8.   

    tiaoci(我挑刺,我快乐) 高手,不过我有些不明白
    var.call(string,params object[] args)
    第二个参数,我试了好多遍都不行
    object[] args = new object[15];
    args[0]=str[@"f:\2005.xls"];
    for(int i=1;i<15;i++)
    {
    args[i] = System.Reflection.Missing.Value;
    }比如 Var book = books.CallVar("Add",args))
    执行会出错也就是只有写数据,没有读,没有保存
    请指点!谢谢
      

  9.   

    我写错了!!
    可以写了,创建新的excel还可以
    我怎么去读excel的数据啊,不能定位activate sheet啊sheets.call("get_Item",args)
    说这句执行目标错误???
    纳闷............