delphi获取txt文本数据填写Excel的问题

Hziee我行我素 2010-02-03 02:06:31
各位大侠!

首先描述下我需要的功能:
有n个txt文件,里面格式大致如下:
...
...
PASS FT_GSM_TEST PHONE_MODE_GSM_900,5,59 Loss(In/Out):6.551227/6.681415
Pass Average Power 31 33 32.08504
Pass Peak Power 31 39 32.08504
Pass Power Vs. Time --- --- passed
Pass Phase Error Peak -20 20 3.680027
Pass Phase Error RMS --- 4 1.38195
Pass Frequency Error -75 75 2.77953
Pass Spectrum due to Modulation --- --- passed
--- SM@-600KHz --- -60 -77.72936
--- SM@-400KHz --- -60 -70.25675
--- SM@400KHz --- -60 -71.37618
--- SM@600KHz --- -60 -77.54009
Pass Spectrum due to Switching --- --- passed
--- SS@-600KHz --- -21 -37.55593
--- SS@-400KHz --- -19 -33.86618
--- SS@400KHz --- -19 -30.75134
--- SS@600KHz --- -21 -36.9227

PASS FT_GSM_TEST PHONE_MODE_GSM_900,5,121 Loss(In/Out):6.573294/6.66533
Pass Average Power 31 33 32.00257
Pass Peak Power 31 39 32.00257
Pass Power Vs. Time --- --- passed
Pass Phase Error Peak -20 20 4.223923
Pass Phase Error RMS --- 4 1.418725
Pass Frequency Error -75 75 -6.447608
Pass Spectrum due to Modulation --- --- passed
--- SM@-600KHz --- -60 -76.80498
--- SM@-400KHz --- -60 -70.09677
--- SM@400KHz --- -60 -70.19224
--- SM@600KHz --- -60 -76.6252
Pass Spectrum due to Switching --- --- passed
--- SS@-600KHz --- -21 -36.59517
--- SS@-400KHz --- -19 -32.51443
--- SS@400KHz --- -19 -31.2654
--- SS@600KHz --- -21 -37.62667

PASS FT_GSM_TEST PHONE_MODE_GSM_900,5,978 Loss(In/Out):6.555149/6.605227
Pass Average Power 31 33 32.17142
Pass Peak Power 31 39 32.17142
Pass Power Vs. Time --- --- passed
Pass Phase Error Peak -20 20 2.987957
Pass Phase Error RMS --- 4 1.390235
Pass Frequency Error -75 75 -13.78932
Pass Spectrum due to Modulation --- --- passed
--- SM@-600KHz --- -60 -76.88134
--- SM@-400KHz --- -60 -71.08246
--- SM@400KHz --- -60 -70.57403
--- SM@600KHz --- -60 -77.26451
Pass Spectrum due to Switching --- --- passed
--- SS@-600KHz --- -21 -38.1521
--- SS@-400KHz --- -19 -33.97249
--- SS@400KHz --- -19 -29.52433
--- SS@600KHz --- -21 -36.86544

...
...

有个Excel文件,里面有多个sheet页,比如说有GSM、WCDMA、EDGE 三个
里面大致有这样的列:
GSM_900,978
Average Power;Phase Error Peak;Phase Error RMS;Frequency Error; ...;SM@600KHz;Rx Level;BER

delphi程序的作用就是将txt文件中的数据进行抓取后填入到Excel对应的列中,
比如上面的值填入的应该是:
GSM_900,978
Average Power;Phase Error Peak;Phase Error RMS;Frequency Error; ...;SM@600KHz;
32.17142;2.987957;1.390235;-13.78932;...;-77.26451;

请问大家有没有什么好的方法?需要速度上能够更快一些。
本来用VB写了一个程序,但是速度太慢了,估计方法和算法上存在些问题,所以请教各位大侠们有没有什么妙招???

希望能提供一个比较可行的方案,当然有实例么是最好的了,先谢谢了!!!
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaka_21 2010-02-05
  • 打赏
  • 举报
回复
up
Hziee我行我素 2010-02-05
  • 打赏
  • 举报
回复
已经解决了,在给cxgrid循环填充 的前后加了

my_cxgrid.BeginUpdate;
{
for 循环
}
my_cxgrid.EndUpdate;

速度马上得到提升!

问题解决!谢谢各位!
Hziee我行我素 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shuangyan 的回复:]
写excel最快的办法就是自己按照excel的文件格式来写。
具体可以参照dxdbgrid的savetoxls的源程序
[/Quote]

这个方面使用了cxgrid,导出excel是快了,但是发觉速度慢是在对txt文本进行读取,获取对应的数据并填写至cxgrid中时速度比较慢,现在一个文本处理下来需要7秒多,一个文本345KB,需要获取的数据项有500多项。

有没有快速点的方法么?感觉太慢了,每次计算都是需要1000个文本的,这样处理下来得1000*7=7000秒=2个小时
Hziee我行我素 2010-02-03
  • 打赏
  • 举报
回复
没有能具体点的么?
Hziee我行我素 2010-02-03
  • 打赏
  • 举报
回复
vb里面也就是先将excel中的列名赋值给数组,然后对txt文件一块一块地也赋值给数组,两个数组比较一下再填到对应的列中,所以速度很慢
shuangyan 2010-02-03
  • 打赏
  • 举报
回复
写excel最快的办法就是自己按照excel的文件格式来写。
具体可以参照dxdbgrid的savetoxls的源程序
lhy 2010-02-03
  • 打赏
  • 举报
回复
vb是怎么编的?大致说一下方法。
一般也就是找到对应页,当前最高行,对应列写入
Hziee我行我素 2010-02-03
  • 打赏
  • 举报
回复
楼上的大侠?能说详细点么?
idecl 2010-02-03
  • 打赏
  • 举报
回复
用流操作,速度快很多

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧