1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Excel Lento

Discussão em 'Progress 4GL' iniciado por tiagopdnjdc, Maio 21, 2010.

  1. tiagopdnjdc

    tiagopdnjdc Sem Pontuação

    Fala pessoal

    tenho o código abaixo que cria uma planilha, sobre um modelo, porém o linha a linha está muito lento, ele demora demais para preencher cada celula.

    É normal isso?

    Ou meu código está furado? Coloquei para ele exibir o excel e ir preenchendo e realmente é na hora de preencher que fica lento.

    Segue abaixo:

    Código:
        CREATE "Excel.Application" chExcelApplication.
        FILE-INFO:FILE-NAME = "c:\temp\xx.xlt".
        chexcelapplication:workbooks:OPEN(FILE-INFO:FULL-PATHNAME,TRUE).
    
        FOR EACH tabela:
    
            RUN pi-acompanhar in h-acomp (input string("EXCEL : " + tabela.campo)).
                
            chexcelapplication:Sheets("Plano"):Select.
        
            chExcelApplication:range("A1"):value = "xx - " + f-mes:SCREEN-VALUE + "/" + STRING(YEAR(TODAY)). 
            chExcelApplication:range("H3"):value = "xx. " + f-mes:SCREEN-VALUE + "/" + STRING(YEAR(TODAY)). 
            chExcelApplication:range("I3"):value = "xx: " +  f-data-corte:SCREEN-VALUE. 
                
            chexcelapplication:Rows(string(i) + ":" + STRING(i)):Select.
            chexcelapplication:Selection:Insert.   
    
            chExcelApplication:range("G" + STRING(i) + ":" + "CE" + STRING(i)):numberformat =  "#.##0,00". 
            chExcelApplication:range("A" + STRING(i) + ":" + "CE" + STRING(i)):interior:colorindex = 02. /* 10 é o código da cor. */
            
            chExcelApplication:range("A"  + STRING(i)):value = xx
            chExcelApplication:range("B"  + STRING(i)):value = xx
            chExcelApplication:range("C"  + STRING(i)):value = xx
            chExcelApplication:range("D"  + STRING(i)):value = xx
            chExcelApplication:range("E"  + STRING(i)):value = xx
            chExcelApplication:range("F"  + STRING(i)):value = xx
            chExcelApplication:range("G"  + STRING(i)):value = xx
            chExcelApplication:range("H"  + STRING(i)):value = xx
            chExcelApplication:range("I"  + STRING(i)):value = xx
            chExcelApplication:range("J"  + STRING(i)):value = xx
            chExcelApplication:range("L"  + STRING(i)):value = ("=SUM(I" + STRING(i) + ":K" + STRING(i) + ")").
            chExcelApplication:range("M"  + STRING(i)):value = ("=H" + STRING(i) + "-L" + STRING(i)).
            
            ASSIGN i-cont2 = 1
                   c-cel-soma  = ""
                   c-cel-soma2 = "".
    
            DO i-cont = 1 TO 31:
                chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value =xx[i-cont].
                chExcelApplication:range(c-coluna[i-cont2 + 1]  + STRING(i)):value =xx[i-cont].
                
                IF c-cel-soma = "" THEN
                    c-cel-soma = "=" + STRING(c-coluna[i-cont2] + STRING(i)).
                ELSE
                    c-cel-soma = c-cel-soma + "+" + STRING(c-coluna[i-cont2] + STRING(i)).
    
                IF c-cel-soma2 = "" THEN
                    c-cel-soma2 = "=" + STRING(c-coluna[i-cont2 + 1] + STRING(i)).
                ELSE
                    c-cel-soma2 = c-cel-soma2 + "+" + STRING(c-coluna[i-cont2 + 1] + STRING(i)).
    
                i-cont2 = i-cont2 + 2.
            END.
    
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = c-cel-soma.
            i-cont2 = i-cont2 + 1.
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = c-cel-soma2.
            i-cont2 = i-cont2 + 1.
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = "=M" + STRING(i) + "-BX" + STRING(i).
            i-cont2 = i-cont2 + 1.
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = xx.
            i-cont2 = i-cont2 + 1.
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = xx[1]. 
            i-cont2 = i-cont2 + 1.
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = xx[2].
            i-cont2 = i-cont2 + 1.
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = xx[3].
            i-cont2 = i-cont2 + 1.
            chExcelApplication:range(c-coluna[i-cont2]  + STRING(i)):value = b-es-plano-mestre-det.programa-mes[4].
            i-cont2 = i-cont2 + 1.
    
            i = i + 1.[quote][/quote]
        END.
        
        chexcelapplication:Sheets("Plano"):Select.
    

Compartilhe esta Página