一个一千多行的excel表,原表:学号,姓名,班级,课程,成绩。一个人有多个课程,每个人的课程不完全相同。要将原表变成:学号,姓名,班级,课程1,``课程n;一个人只占用一行,并将成绩写在相应的课程下。
例如:原表:22 小小 1 数学 60     新表:         数学 语文 历史
            22 小小 1 语文 99          22 小小 1 60   99
            23 的的 1 数学 88          23 的的 1 88        55
            23 的的 1 历史 55
我的做法是:打开两个excel工作区,一个是原表,一个是空表(用于写入整理后的结果)用Range中的GetItem读取数据,处理(进行一些比对工作,主要是调整写入的位置)。等全部整理后,将其写入新表。
程序可以运行,可是比较慢。并且主程序站用了80多M的内存(最多时),还有两个excel的进程。cup的使用率有时会达到100%      

解决方案 »

  1.   

    不用Dispatch接口操作 用Excel的驱动直接连这2个表然后做 行列 转换 转换的时候要注意算法的优化
      

  2.   

    如果你有SQL SERVER的话把这2个文件 链接进来然后 Insert a(学号,姓名,班级)  SELECT 学号,姓名,班级 FROM b GROUP BY 学号,姓名,班级然后一组一组的UPDATE a SET 成绩n = b.成绩 WHERE  b.课程=XX AND XXXX = XXXX
      

  3.   

    用Excel的驱动会比较简单,然后直接用SQL语句会快点。
      

  4.   

    谁有代码啊,给一个咯。谢谢了
    我邮箱是:[email protected]
      

  5.   

    用Excel驱动,然后按sql语句来进行操作等