ListView中存放了大约1000条记录,每条记录有50多个字段,若用for循环将数据搬移到excel中速度异常缓慢,有没有快速算法?请高手指导~~

解决方案 »

  1.   

    只是产生文件的方式有些讲究,你是生成csv还是调用Excel对象来生成Excel??
      

  2.   

    用数组,或DataTable填充,速度贼快
      

  3.   

    哦?请教这为仁兄,是先将ListView的内容存入数组然后再填充Excel么?用DataTable如何实现呢?
      

  4.   

    使用多个单元格写入的速度远快于对单元格进行逐个写入,因此是提高生成Excel速度的一个重要途径。示例代码Excel.Application xApp = new Excel.ApplicationClass();
    string[,] strs = new string[9, 9];
    for(int i = 0; i < 9; i++)
    for(int j = 0; j < 9; j++)
    strs[i, j] = Convert.ToString((i + 1) * (j + 1));Excel.Workbook xBook = xApp.Workbooks.Add(Missing.Value);
    Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Worksheets[1];
    xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[9, 9]).Value = strs;
      

  5.   

    同意楼上的,
    如同List.AddRange()比循环用List.Add()速度快
      

  6.   

    不过有个问题,listview中的内容不是固定的,如何确定string[,]的大小呢?
    或者是否可以将string[,]做为缓冲,开两个线程,一个填充string[,],另一个向excel写数据。但这样填充缓冲的速度会不会仍然制约向excel写数据的速度?
      

  7.   

    先把数据填充到一个二维数组
    再将二维数组填充到RANGE
    用种方法导入过5万行数据
    只用了10秒
      

  8.   

    Ok,从listview向string[,]写数据速度异常的快,再range到excel中几乎不费什么时间。
    这个很奇怪哦,为何向数组搬移数据速度会这么迅速?向excel写数据时后台做了很多工作么?
      

  9.   

    将帖子结了吧,谢谢同学们的解答,我已将一些信息放在我的blog中:http://www.cnweblog.com/mikron
    这里还有一些我的工程介绍,可以供大家参考