Ver Mensaje Individual
  #1  
Antiguo 08-03-2010
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Reputación: 21
mRoman Va por buen camino
Exportar a excel sin excel

Hola amigos....

De nuevo tratanto de encontrar como se exporta un QRY a excel usando una plantilla de por medio. Les explico el caso.

Tengo una plantilla con los formatos definidos asi como las formulas que se necesitan, generarlo no es problema en Windows y teniendo instalado el Excel, el problema es que ya cambiamos de plataforma de S.O. ahora estamos usando Linux Suse Enterprise...y pues ahi o tenemos Excel instalado.


He consultado lo siguiente:
http://www.clubdelphi.com/foros/showthread.php?t=703
http://www.clubdelphi.com/foros/arch...hp/t-4845.html
http://www.clubdelphi.com/foros/showthread.php?t=11950
http://www.clubdelphi.com/foros/showthread.php?t=6060
http://www.clubdelphi.com/foros/showthread.php?t=703
http://www.clubdelphi.com/foros/show...=qreport+excel
http://www.clubdelphi.com/foros/showthread.php?t=16467

Estas páginas las he consultado y en algunas hacen referencia a otra, pero no funciona el link.

En otras menciona algo de BIFF(creo q esto podría ser la solución) pero no logro como se podria usar y ni ejemaplos tampoco, les comento que tengo instalado los componentes de delphi.com.ar.

También tengo instalado los siguientes componentes:
XLSExport, pero me pide una archivo llamado CFILE.PAS, el cual lo busque en mi laptop y no lo encuentra.

FIRESOFT, pero no permiten el manejo de una plantilla.

MAX: Aqui me parece que no manejan plantillas, generan sí el archivo pero con un formato que no necesito como los de FireSoft o bien no sé del todo su utilización.

XLSREADWRITE : Este es de evaluación y sí realiza lo que necesito, pero solo es por algunos dias.

Han de perdonar que escriba sobre esto nuevamente, ya he creado hace algunos meses este mismo tema en otro hilo, pero obvio no obtuve respuesta satisfactoria, desde q me enteré que ibamos a cambiar a Linux, empece a investigar pero sin resultados satisfactorios.

Les comento que en el momento de crear el objeto, corriendo mi sistema en linux, me manda un error "Ole Error 80040...(no recuerdo lo demas)", supongo q lo manda porq no se tiene el excel.

Si alguien sabe como se puede resolver lo anterior se los agradezco.

Bueno les pongo algo del código q utilizo para generar el archivo de Excel mediante una plantilla sobre un S.O Windows teniendo instalado Excel:
Código Delphi [-]
procedure TfrmExportar.btnAplicarClick(Sender: TObject);
Var
   Excel, Libro: Variant;
   Lin,c,l,xDia,Bandera,nHoja,nMes,nMes2,nLec1, nLec2,nAnio, nTipoContr1, nTipoContr2 :Integer;
   cMes,cFichero:string;
   AA,MM,DD,dDia,dMes,dAnio:Word;
   dFecha1, dFecha2, dFecha3:TDateTime;
begin
   // OBTENEMOS LAS VENTAS DEL PERIODO POR TIPO DE PRODUCTO
//   XLS.lo
   qryVentasDiarias.Close;
   qryVentasDiarias.SQL.Clear;
   qryVentasDiarias.SQL.LoadFromFile('C:\SQLS\EXP_VENTAS.SQL');
   qryVentasDiarias.ParamByName('MES').AsInteger:=cbxMes.ItemIndex+1;
   qryVentasDiarias.ParamByName('ANIO').AsInteger:=StrToInt(mskAnio.Text);
   qryVentasDiarias.ParamByName('PRODUCT').AsString:=cbxProducto.KeyValue;
   qryVentasDiarias.Open;
   qryVentasDiarias.First;

   qryExportar.Close;
   qryExportar.SQL.Clear;
   qryExportar.SQL.LoadFromFile('c:\SQLS\EXP_ENCAB.SQL');
   qryExportar.ParamByName('MES').AsInteger:=cbxMes.ItemIndex+1;
   qryExportar.ParamByName('ANIO').AsInteger:=StrToInt(mskAnio.Text);
   qryExportar.ParamByName('PRODUCT').AsString:=cbxProducto.KeyValue;
   qryExportar.Open;
   qryExportar.First;
   if cbxProducto.KeyValue='TT-303-0001' then
   begin
       // CREA EL ARCHIVO DE EXCEL DE LA LECHE LIQUIDA SUBSIDIADA
       try
            Bar.Step:=1;
            Bar.Max:=qryVentasDiarias.RecordCount;
            Excel:=CreateOleObject('Excel.Application');
            Excel.Visible:=false;
            Excel.DisplayAlerts:=False;
            Excel.WorkBooks.Add('c:\SQLS\Plantillas\RPT_01.xlt');
            nHoja:=1;
            Libro:=Excel.WorkBooks[1].WorkSheets[nHoja];
            cMes:=cbxMes.Items[cbxMes.itemindex];
            // LLENAR EL ENCABEZADO DEL ARCHIVO DE EXCEL Y DATOS GLOBALES
            Libro.Cells[3,2]:='Comportamiento de las ventas / Solicitud de leche del mes de '+cMes+'-'+mskAnio.Text+'.';
            Libro.Cells[5,2]:='Dias de Venta:';

Creo q el problema esta en "Excel:=CreateOleObject('Excel.Application');".

Si me pueden ayudar con algo de código, para generar una archivo de Excel usando una plantilla que tenga las mismas caracteristicas de mi código, es decir, que pueda registrar información celda por celda, sin tener instalado el Excel....

Gracias por su tiempo y dedicación muchachos....SALUDOS !
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita