我有一文本文件,要求每3行转换成excel一行,eg:
txt内容:


编程


程序员
要求的excel格式:
我 爱 编程
我 是 程序员
我的文本文件可能很大(10M以上),我写了一个算法很慢,求一快速的算法,分数不够再加,只要能够达到我要求的时间。

解决方案 »

  1.   

    欢迎各位jjgg来参与,祝各位jjgg新年快乐!
      

  2.   

    10M左右的文件,可考虑用TStringList+XLSReadWriteII
      

  3.   

    粗略一写
    读文本文件速度肯定没问题,写excel如果慢的话,屏蔽Excel.Visible:=true;试试uses ComObj;procedure TForm1.Button1Click(Sender: TObject);
    var
    Excel:Variant;
    f:TextFile;
    i,j:integer;
    s:string;
    begin
        if not FileExists('D:\1.txt') then exit;
        AssignFile(f,'D:\1.txt');
        Reset(f);
        Excel:=CreateOleObject('Excel.Application');
        Excel.workbooks.open('D:\test.xls');
        Excel.worksheets[1].activate;
        Excel.Visible:=true;
        i:=1;
        j:=0;
        while not eof(f) do
        begin
            Readln(f,s);
            inc(j);
            Excel.cells[i,j].value:=s;
            if j=3 then
            begin
                inc(i);
                j:=0;
            end;
        end;
        Excel.ActiveWorkBook.Save;
        Excel.workbooks.close;
        //Excel.Disconnect;
        Excel.quit;
        ShowMessage('ok');
    end;
      

  4.   

    漏了一句
    CloseFile(f);加在showmessage前面
      

  5.   

    1.写代码一行一行处理吧. 同意hellolongbin(一个人[年长资深少男])
    2.先把文本文件做格式化处理,把每三行变成一行的文本文件,然后用ADO把Text文件当作数据表处理,导入到Excel里;
      

  6.   

    用*.csv格式,这样就不用打开 Excel对象操作,速度会快很多。