Progress - Excel

   
Vista:

Excel

Publicado por Horacio Coya (9 intervenciones) el 28/09/2007 07:41:17
Buenos días a todos.

Tengo el siguiente problema en progress y excel:

Tengo una tabla con 4300 registros, y se carga en excel, el proceso dura casi 1 hora, es demasiado lento. Necesito una ayudita para bajar los tiempos de generación de la hoja excel.

Atte.
Horacio Coya
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Excel

Publicado por pedro (3 intervenciones) el 18/10/2007 19:26:55
Habria que ver el programa y tambien ver que equipo tienes, puedes enviarme el programa!? checa el progama que te envio!

DEFINE VARIABLE i AS INTEGER.

DEFINE VARIABLE chExcelApplication AS COM-HANDLE.
DEFINE VARIABLE chWorkbook AS COM-HANDLE.
DEFINE VARIABLE chWorksheet AS COM-HANDLE.
DEFINE VARIABLE chChart AS COM-HANDLE.
DEFINE VARIABLE intRenglon AS INTEGER.
DEFINE VARIABLE col_ren AS CHARACTER.

RUN AbreExcel.

DO i = 1 TO 56:
intRenglon = i.

RUN PINTA(i, intRenglon, 2).
chWorkSheet:Range("C" + STRING(intRenglon) + ":C" + STRING(intRenglon)):Interior:ColorIndex = i.
END.

RUN Formatea.
RUN CierraExcel.

/******************************************* PROCEDURES *********************************************************************/
PROCEDURE Formatea.
chWorkSheet:Range('A2:BZ4'):Font:Bold = TRUE.
chWorkSheet:Cells:Select.
chWorkSheet:Cells:Font:size = 8.
chWorkSheet:Range('A5'):Font:Size = 8.
chWorkSheet:Range('A1:A1'):Select().
chWorkSheet:Range('M1:M3'):HorizontalAlignment = -4108.
chWorkSheet:Range('A1:BZ4'):Font:size = 7.
chWorkSheet:Range('D5:F2000'):NumberFormat = "#,##0.00".
/*
chWorkSheet:Range('D4:AR2000'):Interior:ColorIndex = 20 NO-ERROR.
chWorkSheet:Range('AT4:BD2000'):Interior:ColorIndex = 19 NO-ERROR.
chWorkSheet:Range('AS4:AS2000'):Interior:ColorIndex = 37 NO-ERROR.
chWorkSheet:Range('AS5:AS2000'):Font:Bold = TRUE.
chWorkSheet:Range('BE4:BE2000'):Interior:ColorIndex = 36 NO-ERROR.
chWorkSheet:Range('BE5:BE2000'):Font:Bold = TRUE.
*/
chWorkSheet:Range('A:A'):ColumnWidth = 8.
chWorkSheet:Range('B:B'):ColumnWidth = 6.
chWorkSheet:Range('C:C'):ColumnWidth = 43.

END PROCEDURE.

PROCEDURE AbreExcel.

CREATE "Excel.Application" chExcelApplication.
chExcelApplication:Visible = TRUE.
chWorkbook = chExcelApplication:Workbooks:Add().
chWorkSheet = chExcelApplication:Sheets:Item(1).
END.

PROCEDURE Pinta:
DEFINE INPUT PARAMETER texto AS CHARACTER.
DEFINE INPUT PARAMETER renglon AS INTEGER.
DEFINE INPUT PARAMETER columna AS INT.

IF columna >= 53 THEN
col_ren = 'B' + CHR((columna - 52) + 64) + STRING(renglon) .
ELSE IF columna >= 27 AND columna <= 52 THEN
col_ren = 'A' + CHR((columna - 26) + 64) + STRING(renglon) .
ELSE
col_ren = CHR(columna + 64) + STRING(renglon) .

chWorkSheet:Range(col_ren):Value = texto NO-ERROR.

IF ERROR-STATUS:ERROR THEN DO:
MESSAGE RENGLON SKIP
COLUMNA SKIP
TRANSACTION SKIP
col_ren
TEXTO VIEW-AS ALERT-BOX.
STOP.
END.
END PROCEDURE.

PROCEDURE CierraExcel:
RELEASE OBJECT chExcelApplication.
RELEASE OBJECT chWorkbook.
RELEASE OBJECT chWorksheet.
END.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar