PDA

Ver la Versión Completa : exportar a excel mas rapido.


kapcomx
12-01-2011, 18:54:50
Buen dia amigos del Foro, Pues les comento mi situación, actualmente tengo un sistema en delphi 7 que trabaja com mysql 5.0 y un wamp server 5 el cual genera reportes impresos y en algunos casos tiene que enviar la info a excel.

para lo cual utilizo los componentes excelaplication, excelWorkBook y ExcelWorkSheet.

el codigo es algo asi:

//conecto
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
ExcelWorksheet1.ConnectTo(ExcelApplication1.Sheets[1] as _WorkSheet);

//escribo
EXCELWORKSHEET1.Cells.ITEM[2,1].VALUE:='REPORTE DE PAGOS: ';


//utilizo un while para pasar el resultado de la consulta
While Not (QUERY1.EOF) do
begin
With ExcelWorksheet1.Cells do
begin
if (QUERY1.FieldValues['FOLIO']=null) then
Item[Fila,1].Value :=' '
else
BEGIN
T:=(QUERY1.FieldValues['FOLIO']);
Item[Fila,1].Value :=T;
END;
.
.
.
QUERY1.Next;
fila:=fila+1;
end;
end;

cuando empezo a operar el sistema hace como un año no habia tanto problema, el problema es ahora que hablamos de casi diez mil folios........
se tarda

he visto en el phpadmin que cuando exportas una tabla lo hace casi de inmediato sin importar que tenga mas de diez mil folios.....

quisiera que me pudieran decir de que otra manera puedo exportar a excel mas rapido.

De antemano les agradezco la atención y les envio un saludo

http://www.clubdelphi.com/foros/images/icons/icon7.gif

Neftali [Germán.Estévez]
13-01-2011, 10:47:27
Hola kapcomx.
Antes de nada te recomendaría que cuando añadas código Delphi, utilices TAG's (http://tinyurl.com/y5ctbot), ya que de esta forma se lee bastante mejor.

En cuanto a tu problema se me ocurren 2 posibles opciones:

(1) Trabajar directamente con ADO. Puedes conectar a Excel utilizando los componentes ADO y grabar datos en una hoja como si se tratara de una tabla, utilizando los componentes ADOTable o ADOQuery. Tal vez deberías realizar algunas pruebas de velocidad a ver si de esta forma exporta más rápido. Si buscas en los foros (http://www.clubdelphi.com/foros/search.php) sobre "ADO* Excel" encontrarás varios mensajes de cómo conectar.

(2) La otra opciuón que se me ocurre (y es lo que hacen muchos programas) es utilizar exportación a CSV (Comma Separated Value); Se trata de un archivo de texto donde los datos se separan por comas y que por defecto el sistema (Windows) lo Asigna a Excel para abrirlo. Excel lo abre además sin problemas y detecta los diferentes Datos. Muchos programas utilizan este sistema, ya que es independiente de la versión de Excel, incluso es posible realizarlo sin tener Excel instalado. La velocidad en este caso seguro que es más rápida que conectando vía Automatización, como lo estás haciendo tú.

kapcomx
13-01-2011, 17:15:05
Muchas Gracias por la respuesta, intentare entonces (primero que nada investigar lo de las tags) enviar el resultado de la consulta a un archivo csv y luego abrirlo en Excel.

Saludos y gracias....:)