几万条的excel操作的效率问题,集思广益,请熟悉的朋友进来谈谈。(100分)

  • 主题发起人 主题发起人 fcy123
  • 开始时间 开始时间
F

fcy123

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在要做一个程序导入excel表格的内容,在这个操作里还要做数据有效性校验,通常数据会在1w-4w条左右,现在有几个问题:
1.现在的思路先检验后导入,数据有问题,校验的时间就会很长;
2.用户对excel可能做过一些操作,在导入的时候有些记录看上去没有问题,系统反复提示出错。
3.现在是检验有问题就退出,下一次从头开始,这样速度慢的让人无法忍受,尤其是问题多的时候。
请大家出出高见,这种问题如何操作才好。程序用delphi+access数据库。
 
1-4w条记录,速度不会成为问题
读excel的时候不要使用ado直接连接excel进行读写,这样读写经常出现错误,用ole连接,然后把excel读入一个clientdataset中,再进行校验,或者用ado只读连接excel,然后只校验不要往回写数据,校验通过后再写
 
“数据有问题,校验的时间就会很长;” 改进你的效验函数
先检查全部数据再导入 或者有问题的数据标注出来 没问题的先导入
 
楼主,对于4W条记录读取应该不是问题.
你的问题就是一个校验的问题.这就需要你去改函数了.
对于有问题的数据,你可以先将他放到一个list中,不去抛,最后再抛...
 
你把excel模板先给写好,然后用户去填,
那频繁检查没办法,谁叫他不把数据先给弄好呢。

至于快,用剪贴板 来进行excel导入是最快的,超快的
 
不建议使用ADO连接EXCEL,EXCEL数据的随意性是最令人讨厌的,使用剪切板是最快的方法,不受EXCEL中数据类型的影响,我们测试50000行、50列的Sheet,读取很快的,但是剪切版共享时、多线程操作时会发生数据共享错误。

无论何时不建议对EXCEL回写,可能造成EXCEL的永久破坏。
 
使用 xlsreadwriteII,绝对是你的不二选择!
10w 之类的速度不成问题,而且支持读写,在盒子上有下的。
 
楼上几人的答案都很不错,不过都是针对工具、方式作出解答,我想跟楼主探讨的是方法的问题,因为我前段时间也处理过这样的事情,觉得有点体会,交流一下。

1.现在的思路先检验后导入,数据有问题,校验的时间就会很长;
一般不要在excel零碎读,边读边校验 速度很慢,所以,不要先校验后导入,而是批量导入到一个临时表里面,都是字符型字段,然后再去校验这个临时表里面数据的合法性。

2.用户对excel可能做过一些操作,在导入的时候有些记录看上去没有问题,系统反复提示出错。3.现在是检验有问题就退出,下一次从头开始,这样速度慢的让人无法忍受,尤其是问题多的时候。

根据第一部分说的,你把导入的临时表,想办法把这个临时表保存下来也许可以减少掉校验成功那些数据的时间。
不过这不是一个好方法,因为一般有错误的时候是excel里面错,如果修改了excel那就的再导入一次,也就得从头再校验。
我碰到的问题一般都是类似于半角全角的问题,10和10;数据校验不过,比如1+4=6这类,所以我开了个编辑窗口,校验不过的,停下来,允许修改数据,修改后再继续。
(但有些数据还是没办法确定改哪些,比如1+4=6,究竟改成是1+4=5?还是 2+4=6? 1+5=6? 业务不清楚都不知道怎么改,这种情况 只能打回excel,改好再来,这时候最好能显示那个excel文件 哪行哪列错误。)

不要怕繁琐,做了再说,但思路一定要清晰。
 
后退
顶部