我是要讀取數據并保存為Excel檔,我開一個Sheet并設置最大不得超過65535,我現在開始讀取數據并放入到Sheet中,
這些都沒有什麽問題,但是當我放入到sheet的數據超過了5W+的時候,save的時候會出錯,數據沒辦法刷出來;但是如果數據4W多的時候就可以,
我想問下有沒什麽辦法用Excel保存這么大的數據量?

解决方案 »

  1.   

    这应该和Excel的大小有关系吧!试着分开保存!
      

  2.   

    要求是不能分開保存的,只是要求如果超過了65535條數據就開新sheet。
      

  3.   

    我那數據量都是以W計的,如果保存為Excel的話,是不是只能先把所有數據都讀進內存中,然後一起刷到Excel檔啊??
      

  4.   


    这么多数据,最好是先读到DataSet中吧
      

  5.   


    把dataset数据保存到excel
    public void CreateExcel(DataSet ds, string FileName)
        {
            HttpResponse resp;
            resp = Page.Response;
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
            string colHeaders = "", ls_item = "";
            //定义表对象与行对象,同时用DataSet对其值进行初始化
            DataTable dt = ds.Tables[0];
            DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
            int i = 0;
            int cl = dt.Columns.Count;
            //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            for (i = 0; i < cl; i++)
            {
                if (i == (cl - 1))//最后一列,加n
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                }
                else
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                }
            }
            resp.Write(colHeaders);
            //向HTTP输出流中写入取得的数据信息
            //逐行处理数据 
            foreach (DataRow row in myRow)
            {
                //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据  
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        ls_item += row[i].ToString() + "\n";
                    }
                    else
                    {
                        ls_item += row[i].ToString() + "\t";
                    }
                }
                resp.Write(ls_item);
                ls_item = "";
            }
            resp.End();
        }
      

  6.   

    一个Excel的sheet可以存放65535条数据(这是Excel自身规定的)   这是可以实现的
    你这儿应该是代码的问题  如果运行4W是没有问题的   那么我想  是不是文件写入或数据库连接超时一类的错误   
    你把错误贴出来看看
      

  7.   

    变大一个sheet的容量好像不太可能吧。
    你用程序平分一下,当然这个必须是你的需求应许的情况下。
    还有一种办法是存为CVS。这个的话超过5w应该不会出问题
      

  8.   

    private Workbook oWorkbookAll = new Workbook();
    private Worksheet oWorksheetAll;
    前面是我聲明的Worksheet 和Workbook ,并已經把Worksheet 定義到workbook中了,
    後面是在代碼中加入數據,
    oWorksheetAll.Cells[lineNum, j - 1].PutValue(int.Parse(str));
    這些都OK,數據量不太大的時候都OK,可以workbook.save();但是太大就出錯,有什麽好辦法是可以保存大數據量進Excel嗎?一定要先進dataset再進Excel嗎?不能放到內存中直接進Excel嗎?
      

  9.   

    数据量大建议用StreamWriter流来导出,这样的速度比较快
    大于65000行建议分割成多个SHEET
      

  10.   

    程式內部有設置如果數據量超過65535則開新sheet,現在不是分割sheet問題,而是數據量太大刷不出內存。
    我現在想問下,如果數據量是10W以上,那么要保存進Excel怎么保存啊?直接保存會遇到像我這樣的問題:太大內存中刷不出來。
    各位高手是怎么把大數據量保存進Excel的呢?
      

  11.   

    这么大的数据量导出Excel不是好的解决方案,不然还要DB干啥
      

  12.   

    http://www.microsoft.com/china/community/Columns/Lihonggen/4.mspx