首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于while循环和for循环的优化解决方法

2013-01-25 
关于while循环和for循环的优化如题:有一段代码如下:while(inRow){AnsiString Text for(int k 0

关于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本身就慢,没办法,不是循环的问题
[解决办法]
用数据库方式打开就快多了!


//---------------------------------------

#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() ;

}
//---------------------------------------


[解决办法]
复制到剪贴板,然后从剪贴板读取。

热点排行