读书人

关于while循环跟for循环的优化

发布时间: 2012-08-22 09:50:34 作者: rapoo

关于while循环和for循环的优化
如题:有一段代码如下:

while(i<=nRow)
{
AnsiString Text = "";
for(int k = 0 ; k < nCol ; k++)
{
value[k] = WorkSheet1.OlePropertyGet("Cells", i, k+1).OlePropertyGet("Value");
}
for(int j=0;j<num;j++)
{
value[Index[j]-1] = value[Index[j]-1] + DateDelimt;
Text += value[Index[j]-1];
}
ReadList->Add(Text);
i++;
}

用途是将一个excel表格中的指定的列提取出来放到ReadList中

当i小于这个表格的行数的时候进入while循环

然后将每一行的所有值获取出来,用的for循环

然后再来一个for循环,将这一行的指定的列的值一一加入Text字符串

然后再将Text字符串加入ReadList中

但是这个程序在运行过程中特别慢,一个表格中有上万行的数据,循环起来很吃力,感觉这个循环可以优化,但是自己能力有限,还请各路神人指点指点~~

[解决办法]
ole处理ExceL表本身就慢,上万行的数据更不用说了,只能等吧
[解决办法]
OLE本身就慢,没办法,不是循环的问题
[解决办法]
用数据库方式打开就快多了!

C/C++ code
//---------------------------------------#include <vcl.h>#pragma hdrstop#include "Unit1.h"//---------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)        : TForm(Owner){}//---------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){  ADOQuery1->ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =aaa.xls;Extended Properties=Excel 8.0";  String sql="SELECT * FROM [Sheet1$]";  ADOQuery1->SQL->Add(sql);  ADOQuery1->Open() ;}//---------------------------------------
[解决办法]
复制到剪贴板,然后从剪贴板读取。

读书人网 >C++ Builder

热点推荐