作者Gamakatsu (Gama)
看板C_Sharp
标题[问题] 如何有效率读大量CSV资料进DataGridView
时间Tue Mar 3 23:08:23 2015
现在手上有约莫300个CSV档案,每个档案内有 18000 Rows and 27 Columns
目前初步的想法是...
1. 将每个档案的资料读入,并放入一个DataGridView内显示
2. 将读入的资料拿来做处里及分析
目前处理方式如下:
a. 用一个 foreach 回圈列举出资料夹内的所有csv档案
b. 用一个while读档案内所有资料(一次读取一整行)
c. 将(b)读入的资料以 String.split 方法切开
d. 将切开後的资料储存起来 and 显示在DataGridView内
上述的方法实作起来相当的耗时...
请问版上的各位高手们有什麽建议可以提升处理此情况的效率吗?
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.53.34
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1425395305.A.E83.html
1F:推 totte: LumenWorks.Framework.IO 03/03 23:30
2F:→ totte: 或 Microsoft.VisualBasic.FileIO.TextFieldParser 03/03 23:30
3F:→ soup514: code project就有不少可以参考 03/03 23:55
4F:→ soup514: 找fast csv reader 03/03 23:55
5F:→ wvsrugby: 显示很花时间,用DataSet较佳 03/04 00:28
6F:推 Litfal: 是说code project的那个reader并不会特别快,但他考虑的 03/04 00:30
7F:→ Litfal: CSV结构比较完整,单纯用Split会有一些问题 03/04 00:30
8F:→ Litfal: 然後显示的行为你要考虑,是否用部分检视就好。 03/04 00:34
9F:→ Litfal: 以我的经验而言,最慢的部分会在显示在DataGridView,其次 03/04 00:40
10F:→ Litfal: 是Decode,再来是Split。储存我不知道你怎麽存就先不考虑 03/04 00:41
11F:→ Litfal: 忽然想到补充:如果你是FAT32又放很多档案的话,列举也很慢 03/04 01:26
12F:→ GoalBased: 你资料是死的话就写进DB存起来呀 03/04 08:48