Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   mandar resultado SQL a Excel?? (https://www.clubdelphi.com/foros/showthread.php?t=55677)

metroyd 23-04-2008 19:54:59

mandar resultado SQL a Excel??
 
Hola, como puedo exportar el resultado de una consulta sql a Excel??
Trabajo con delphi 6, y mysql.
Gracias

roman 23-04-2008 19:59:15

Te recomiendo los componentes ExportSuite que podrás encontrar en la página de nuestro compañero Federico.

// Saludos

metroyd 23-04-2008 21:11:24

Gracias, son buenos, me funcionaron. Pero tendran la misma funcionalidad cuando corra mi aplicacion.exe en otra computadora??? o debo instalar los componentes en aquella maquina?

roman 23-04-2008 21:14:29

Como sucede en general con los componentes de Delphi, no requieres instalar nada extra en las computadoras donde instales tu ejecutable. Y en este caso en particular, ni siquiera requieres tener instalado Excel.

// Saludos

metroyd 23-04-2008 21:50:31

gracias
 
Cita:

Empezado por roman (Mensaje 282075)
Como sucede en general con los componentes de Delphi, no requieres instalar nada extra en las computadoras donde instales tu ejecutable. Y en este caso en particular, ni siquiera requieres tener instalado Excel.

// Saludos

EXCELENTE AMIGO, GRACIAS POR TU AYUDA!!!!:)

roman 23-04-2008 22:13:11

No hay de qué. Más bien transfiero tu agradecimiento al autor de dichos componentes, Federico Firenze, mejor conocido aquí como delphi.com.ar.

// Saludos

mjjj 26-06-2008 17:38:05

Hola... he chequeado estos componentes y van de maravilla.

Pero lo que necesito realizar es algo diferente... necesito exportar a excel no solo una consulta SQL, sino que varias, es decir, hago una consulta y la exporto, luego otra consulta y la exporta.... etc.

Se puede realizar esto??

Saludos

egostar 26-06-2008 17:47:44

Cita:

Empezado por mjjj (Mensaje 296433)
Hola... he chequeado estos componentes y van de maravilla.

Pero lo que necesito realizar es algo diferente... necesito exportar a excel no solo una consulta SQL, sino que varias, es decir, hago una consulta y la exporto, luego otra consulta y la exporta.... etc.

Se puede realizar esto??

Saludos

Pues no le veo problema, depende como lo quieras hacer, manual o automatico

Si es manual, pues cada que ejecutas un query lo exportas
Si es automatico, asi como abres los queries ejecutas la funcion del componente de nuestro amigo Federico

Salud OS

mjjj 26-06-2008 17:59:50

mi idea es ir incluyendo las distintas consultas una tras otra en las filas del excel... podre realizar esto??

Lo otro... puedo incluir formulas en la planilla excel... por ejemplo una suma de filas: SUMA(B2:B7)

Como se puede hacer esto??

egostar 26-06-2008 18:11:19

Cita:

Empezado por mjjj (Mensaje 296448)
mi idea es ir incluyendo las distintas consultas una tras otra en las filas del excel... podre realizar esto??

Lo otro... puedo incluir formulas en la planilla excel... por ejemplo una suma de filas: SUMA(B2:B7)

Como se puede hacer esto??

No entiendo muy bien y tampoco puedo ser tajante con mi respuesta, pero no seria mejor hacer un query que te de todos los dats que requieras en lugar de hacer un query por cada consulta????

Salud OS

roman 26-06-2008 18:16:06

Quizá lo que el compañero desea es colocar en una misma hoja de Excel, consultas disímiles que no pueden juntarse en una sóla consulta SQL. En ese caso, me parece que los componentes de Federico no funcinarán y habrá que buscar otra opción, por ejemplo, OLE.

// Saludos

mjjj 26-06-2008 19:29:33

gracias compañero roman, eso es lo que ocurre, no puedo juntar los datos que necesito en una sola consulta.

La opcion que comentas OLE, como funciona...

Me puedes hacer una idea de como va la cosa...

Saludos

roman 26-06-2008 19:52:12

Más o menos así:

Código Delphi [-]
uses ComObj;

...

var
  Excel: OleVariant;
  Libro: OleVariant;
  Hoja: OleVariant;

begin
  // Creas una instancia de Excel
  Excel := CreateOleObject('Excel.Application');

  // Agregas un libro con una sólo hoja
  Excel.SheetsInNewWorkbook := 1;
  Libro := Excel.Workbooks.Add;

  // Hoja activa
  Hoja := Libro.ActiveSheet;

  // Accedes a las celdas con la propiedad Cells que es un arreglo
  // bidimensional (fila, columna) basado en 1.
  Hoja.Cells[1, 1] := 'Hola mundo';

  // Muestras la instancia de Excel
  Excel.Visible := true;
end;

Así pues, recorriendo los resultados de tu consulta puedes ir llenando las celdas de una hoja de Excel.

// Saludos

mjjj 26-06-2008 20:51:21

gracias roman funciona a la perfeccion.

otra consulta... con este mismo metodo, estoi tratando de ingresar una formula a cierta celda en particular, como sigue:

Código Delphi [-]
inicio:=2;
fin:=5;
excel.Cells[fila,I].Value:= '=SUMA(C'+inttostr(inicio)+':C'+inttostr(fin);

El problema es que cuando me voy a la planilla, la formula esta escrita en la celda, pero no la reconoce como formula, debo hacerle un clic a la celda y luego a edit para editar la formula... ahi recien la reconoce como tal.

Porque podra ser esto?

Otra cosa... le puedo asignar formato a cierta celda en particular con este mismo metodo?

Gracias... saludos

roman 26-06-2008 21:16:39

Las fórmulas debes ponerlas en inglés, o sea, en lugar de SUMA pon SUM.

// Saludos

mjjj 26-06-2008 21:37:16

gracia nuevamente roman

la ultima pregunta... con este mismo metodo OLe, puedo carle formato a cierta celda en particular, por ejemplo, negrita, tipo moneda, etc??

gracias

roman 26-06-2008 21:59:01

Por ejemplo

Código Delphi [-]
Hoja.Range['A5:A5'].Font.Bold := true;

donde Hoja es como en mi ejemplo.

// Saludos

mjjj 26-06-2008 22:34:49

muchas gracias roman... funciono perfecto.

me puedes dar una lista de las propiedades que puedo modificar:

por ejemplo:

centrado, justificado izq, justificado derecha, color de las letras, color del fondo, bordes (completo, izq, der), tamaño y nombre de letra...

espero no ser de tanto molestia.... muchas gracias

saludos

roman 26-06-2008 23:55:18

Realmente es imposible dar una lista porque hay multitud de objetos, colecciones, métodos, propiedades y valores. El ejemplo que te pongo ahora sólo abarcará una ínfima parte:

Código Delphi [-]
var
  Excel: OleVariant;
  Libro: OleVariant;
  Hoja: OleVariant;

begin
  Excel := CreateOleObject('Excel.Application');

  Excel.SheetsInNewWorkbook := 1;
  Libro := Excel.Workbooks.Add;
  Hoja := Libro.ActiveSheet;

  Hoja.Cells[1, 1] := 'Hola mundo';

  // Fuente de la celda
  Hoja.Cells[1, 1].Font.Name := 'Comic Sans MS';
  Hoja.Cells[1, 1].Font.Size := 18;
  Hoja.Cells[1, 1].Font.Color := RGB($ff, $ff, $ff);
  Hoja.Cells[5, 1].Font.Bold := true;

  // Alineación
  Hoja.Cells[1, 1].HorizontalAlignment := xlCenter;
  Hoja.Cells[1, 1].VerticalAlignment := xlTop;

  // Relleno
  Hoja.Cells[1, 1].Interior.Color := RGB($00, $80, $c0);
  Hoja.Cells[1, 1].Interior.Pattern := xlSolid;

  // Altura de la fila
  Hoja.Range['A1'].RowHeight := 49.5;

  // Combinar celdas
  Hoja.Range['A1:G1'].Merge;

  // Borde
  Hoja.Range['A1:G1'].Borders.LineStyle := xlContinuous;

  Excel.Visible := true;
end;

La mejor fuente de información, sin duda y a pesar será la Referencia de Microsoft Excel Visual Basic que se incluye en la ayuda de Excel. Pero sabe que no siempre es fácil dilucidar cómo se aplican las propiedades y métodos. Muchas veces ayuda grabar una macro de Excel haciendo lo que deseamos y examinando el código de la macro en el editor de Visual Basic de Excel. Por ejemplo, para preparar el ejemplo, no atinaba de sólo ver la ayuda, a ver como se ponía el relleno; entonces hice una macro y me di cuenta que se trataba de la propiedad Interior. Aún así, los macros no siempre se traducen fácilmente. En ocasiones lo que aparentemente se llama con paréntesis, en delphi se llama con corchetes.

Como tip general, te comento que de lo más importante que hay es el conjunto Range, que puede ser una celda, una fila, una columna o conjuntos de ellas.

Otra cosa es que para que delphi te acepte constantes como xlCenter, xlSolid y xlContinuous, debes incluir el archivo con las definiciones de excel, puede ser Excel97 o Excel2000 según la versión que tengas o desees.

// Saludos

mjjj 30-06-2008 16:37:58

gracias roman... me ha funcionado todo bien, lo unico con la cual no he podido, es con los bordes.

Necesito que en cierta celda en particular, tenga borde inferior y borde superior.

Como hago eso?

Saludos


La franja horaria es GMT +2. Ahora son las 08:12:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi