本帖最后由 xuguv 于 2010-01-29 10:48:25 编辑

解决方案 »

  1.   

    用oledb 去select excel 表格行不行?
      

  2.   

    你这样一行一行的写肯定慢啊,可以试试这个方法
    直接将数据表以EXCEL的方式打开或则保存
    public virtual void PageExcel(DataTable pDataTable)
        {
            if (pDataTable != null && pDataTable.Rows.Count > 0)
            {
                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "gb2312";
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");            Response.ContentType = "application/vnd.ms-excel";
                // Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");             //Response.AddHeader("Content-Disposition", "inline;filename="
                //  + HttpUtility.UrlEncode("下载文件.xls"));
                Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode("中文名称", System.Text.Encoding.UTF8) + ".xls\"");
                DataGrid dataGrid = new DataGrid();
                dataGrid.DataSource = pDataTable;
                dataGrid.DataBind();
                //如果输出为Word,修改为以下代码
                //Response.ContentType = "application/ms-word" 
                //Response.AddHeader("Content-Disposition", "inline;filename=test.doc") 
                StringBuilder sb = new StringBuilder();
                System.IO.StringWriter sw = new System.IO.StringWriter(sb);
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
                sb.Append("<html><body>");
                dataGrid.RenderControl(hw);
                sb.Append("</body></html>");
                Response.Write(sb.ToString());
                Response.End();
            }
        }
      

  3.   

    但是我的EXCEL表不是标准表。里面是有格式的。比如有列合并以及行合并。这样直接select  excel是不是读不对?
      

  4.   

    要想解脱,就要如此
    格式问题 可以让写EXCEL的人注意下
    然后程序写的牛点,可以处理一般的格式错误
      

  5.   


    同意,Excel访问组件确实很慢
      

  6.   

    用OleDB 把Excel作为表来查询 ,好像是解决了从头到尾读EXCEL内容的问题。但是每张表是不是还需要打开关闭EXCEL呢?如果需要的话,这个时间还是很长。另外,我的表是很不规则的表,比如(2,40里有个数据,(3,7)里有个数据,(5,2)里有个数据。然后批量的数据要到21行以后才会出现。并且也不是都一样,有些行和行在某些列上会合并。这样读的话,是不是很困难?
      

  7.   

    学习下,我都是用mysql的;
    excel操作本来就很慢,我以前试过很多方法也不行就放弃了;
    现在excel基本都用csv文件来代替了
      

  8.   

    在SQL中直接导入数据到excel
    通过二维数组赋值给单元格
    多线程
      

  9.   

    这个excel本来就很慢,最好是能省则省。
    尽量不要一个一个cells去读,部分由规则的地方用数组一次性读出来,再解析数组。就会省不少时间
    比如 object[,] = (Range)Excel.....
    效率会提高很多的,你可以试试。
      

  10.   

    建议你把excel中的数据先放入到DataTable中,然后批量插入数据库,不要循环构造insert语句。
      

  11.   

    现对200张表的EXCEL进行汇总,用VBA写,这时候还可以做数据check,放到一个工作表中然后再进行导入。
      

  12.   

    印象里EXCEL里的数据和格式是分离的?