小弟现在做个数据导出Excel操作遇见个问题,就是一个Excel最多可以保存多少数据
现在我一个Excel 保存6W条数据
目前大概需要导出18W条数据  所以分3个Excel      这样没问题
敢问有高手可以解答  18W的数据可以用程序放入一个sheet里吗  以2G内存为基础

解决方案 »

  1.   

    http://topic.csdn.net/u/20111104/17/f778ccb3-178b-4650-a746-182dfafa1650.html之前的帖
      

  2.   

    一个sheet 65535-1个
    你可以放多个sheet
      

  3.   

    2G数据对excel压力太大,考虑数据库吧。
      

  4.   

    一个sheet 65535 这个我知道关键是我想知道 遇见这些大批量数据的时候  内存不够用问题如何处理
      

  5.   

    EXCEL2007以上版本有没有这行数限制,这个限制是早期版本的。
      

  6.   

    对应放多个 sheet 是最好的办法
      

  7.   

    excel2003 6 5535
    2007以上版本 104 8576
      

  8.   


     internal void AddDataSource(Worksheet sheet, FeeCondition feeCondition)
            {
                sheet.Workbook.Worksheets.Add("数据区域"); //创建数据工作层
                Worksheet xlsheet = sheet.Workbook.Worksheets["数据区域"]; //定位数据工作层
                List<string> list = new List<string>();
                list.Add(feeCondition.d_import);
                list.Add(feeCondition.ind_import);
                list.Add(feeCondition.d_export);
                list.Add(feeCondition.ind_export);
                Add_set_top(xlsheet);//添加表头
                int row = 0;
                foreach (string str in list)
                {
                    gotable(book.Worksheets[book.Worksheets.Count - 1], ref row, str);
                }        }        /// <summary>
            /// 新建sheet时添加表头
            /// </summary>
            /// <param name="xlsheet"></param>        internal void Add_set_top(Worksheet xlsheet)
            {
                FeeCondition feeCondition = new FeeCondition(0, 0, 0);
                DataTable table = DBAdapter.OradsDBHelper.GetDataTable(feeCondition.d_import);
                for (int i = 0; i < table.Columns.Count; i++)//添加数据区域表头
                {
                    xlsheet.Cells.SetColumnWidth(i, 15);//设定数据每列列宽
                    xlsheet.Cells[1, i + 1].PutValue(table.Columns[i].Caption);
                    SetTableCell(xlsheet.Cells[1, i + 1]);//设定表头格式
                }
            }
            internal void gotable(Worksheet xlsheet, ref int row, string sql)
            {
                Add_set_body(book.Worksheets[book.Worksheets.Count - 1], ref row, DBAdapter.OradsDBHelper.GetDataTable(sql));
            }        internal void Add_set_body(Worksheet xlsheet, ref int row, DataTable table)
            {
                for (int i = 0; i < table.Rows.Count; i++) //添加数据区域表体
                {
                    DataRow bodyrow = table.Rows[i];
                    for (int j = 0; j < table.Columns.Count; j++)
                    {
                        xlsheet.Cells[row + 2, j + 1].PutValue(bodyrow[j]);
                    }
                    row++;
                    if (row == 45000)
                    {
                        ResetSheet(ref xlsheet);
                        row = 0;
                    }
                }        }
            /// <summary>
            /// 当sheet数据行数超过65000时,重新添加sheet
            /// </summary>
            /// <param name="xlsheet"></param>
            internal void ResetSheet(ref Worksheet xlsheet)
            {
                //string path = Application.StartupPath + "\\temp.xls";
                //book.Save(path);
                //book = null;
                //GC.Collect();
                //book = new Workbook();
                //book.Open(path);
                book.Worksheets.Add();//添加sheet
                xlsheet = book.Worksheets[book.Worksheets.Count - 1];//定位新sheet
                Add_set_top(xlsheet);//设置新sheet表头
            }