Ver Mensaje Individual
  #1  
Antiguo 07-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Reputación: 22
oscarac Va por buen camino
Migracion a excel

buenos dias

tengo que pasar un informacion a excel la caracteristica es que se debe pasar en diferentes hojas dependiendo de los datos
codigos 1 y 2 en una hoja
codigo 3 en otra
codigo 4 en otra

entonces hice algo mas o menos asi

Código Delphi [-]
  _FilaTitulos := 1;
    Excel := CreateOleObject('Excel.Application');
    Excel.DisplayAlerts := False;
    Excel.WorkBooks.Add(xlWBATWorksheet);
    //Agrega una hoja
    Excel.WorkBooks[1].WorkSheets.add;
    Excel.WorkBooks[1].WorkSheets.add;
    //Nombra las hojas
    Excel.WorkBooks[1].WorkSheets[1].Name:='Sheet1';
    Excel.WorkBooks[1].WorkSheets[2].Name:='Sheet2';
    Excel.WorkBooks[1].WorkSheets[3].Name:='Sheet3';
    //Referencia a cada hoja con una variable
    WorkSheet1 := Excel.WorkBooks[1].WorkSheets['Sheet1'];
    WorkSheet2 := Excel.WorkBooks[1].WorkSheets['Sheet2'];
    WorkSheet3 := Excel.WorkBooks[1].WorkSheets['Sheet3'];

    WorkSheet1.cells[_FilaTitulos,1] := 'Empresa';
    WorkSheet1.cells[_FilaTitulos,2] := 'Codigo';
    WorkSheet1.cells[_FilaTitulos,3] := 'Cese';
    WorkSheet1.cells[_FilaTitulos,4] := 'Trabajador';
    WorkSheet1.cells[_FilaTitulos,5] := 'Dcto.Trabajador';
    WorkSheet1.cells[_FilaTitulos,6] := 'Empresa';
    WorkSheet1.cells[_FilaTitulos,7] := 'Total';
    WorkSheet2.cells[_FilaTitulos,1] := 'Empresa';
    WorkSheet2.cells[_FilaTitulos,2] := 'Codigo';
    WorkSheet2.cells[_FilaTitulos,3] := 'Cese';
    WorkSheet2.cells[_FilaTitulos,4] := 'Trabajador';
    WorkSheet2.cells[_FilaTitulos,5] := 'Dcto.Trabajador';
    WorkSheet2.cells[_FilaTitulos,6] := 'Empresa';
    WorkSheet2.cells[_FilaTitulos,7] := 'Total';
    WorkSheet3.cells[_FilaTitulos,1] := 'Empresa';
    WorkSheet3.cells[_FilaTitulos,2] := 'Codigo';
    WorkSheet3.cells[_FilaTitulos,3] := 'Cese';
    WorkSheet3.cells[_FilaTitulos,4] := 'Trabajador';
    WorkSheet3.cells[_FilaTitulos,5] := 'Dcto.Trabajador';
    WorkSheet3.cells[_FilaTitulos,6] := 'Empresa';
    WorkSheet3.cells[_FilaTitulos,7] := 'Total';
    i1:= _FilaTitulos + 1;
    i2:= _FilaTitulos + 1;
    i3:= _FilaTitulos + 1;
    qryConsumos.First;
    while not qryConsumos.Eof do
    begin
      if (Izquierda(qryConsumosOtro.AsString,1) = '1') or (Izquierda(qryConsumosOtro.AsString,1) = '2') Then
      Begin
        WorkSheet1.cells[i1, 1].NumberFormat := '@';
        WorkSheet1.cells[i1, 1] := qryConsumosempresa.AsString;
        WorkSheet1.cells[i1, 2].NumberFormat := '@';
        WorkSheet1.cells[i1, 2] := qryConsumosOtro.AsString;
        WorkSheet1.cells[i1, 3] := qryConsumosFechaCese.AsDateTime;
        WorkSheet1.cells[i1, 4] := qryConsumosTrabajador.AsString;
        WorkSheet1.cells[i1, 5] := qryConsumosDcto.AsFloat;
        WorkSheet1.cells[i1, 6] := qryConsumosEmpresa_1.AsFloat;
        WorkSheet1.cells[i1, 7] := qryConsumosDcto.AsFloat + qryConsumosEmpresa_1.AsFloat;
        inc (i1);
      end;
      if (Izquierda(qryConsumosOtro.AsString,1) = '3') Then
      Begin
        WorkSheet2.cells[i2, 1].NumberFormat := '@';
        WorkSheet2.cells[i2, 1] := qryConsumosempresa.AsString;
        WorkSheet2.cells[i2, 2].NumberFormat := '@';
        WorkSheet2.cells[i2, 2] := qryConsumosOtro.AsString;
        WorkSheet2.cells[i2, 3] := qryConsumosFechaCese.AsDateTime;
        WorkSheet2.cells[i2, 4] := qryConsumosTrabajador.AsString;
        WorkSheet2.cells[i2, 5] := qryConsumosDcto.AsFloat;
        WorkSheet2.cells[i2, 6] := qryConsumosEmpresa_1.AsFloat;
        WorkSheet2.cells[i2, 7] := qryConsumosDcto.AsFloat + qryConsumosEmpresa_1.AsFloat;
        inc (i2);
      end;
      if (Izquierda(qryConsumosOtro.AsString,1) = '4') Then
      Begin
        WorkSheet3.cells[i3, 1].NumberFormat := '@';
        WorkSheet3.cells[i3, 1] := qryConsumosempresa.AsString;
        WorkSheet3.cells[i3, 2].NumberFormat := '@';
        WorkSheet3.cells[i3, 2] := qryConsumosOtro.AsString;
        WorkSheet3.cells[i3, 3] := qryConsumosFechaCese.AsDateTime;
        WorkSheet3.cells[i3, 4] := qryConsumosTrabajador.AsString;
        WorkSheet3.cells[i3, 5] := qryConsumosDcto.AsFloat;
        WorkSheet3.cells[i3, 6] := qryConsumosEmpresa_1.AsFloat;
        WorkSheet3.cells[i3, 7] := qryConsumosDcto.AsFloat + qryConsumosEmpresa_1.AsFloat;
        inc (i3);
      end;
      qryConsumos.Next;
      ProgressBarXls.Position := ProgressBarXls.Position +1;
    end;
    WorkSheet1.Cells.Columns.AutoFit;
    WorkSheet2.Cells.Columns.AutoFit;
    WorkSheet3.Cells.Columns.AutoFit;
  WorkBook.SaveAs(fname);
  WorkBook.Close(fName);
    Excel.Quit;

pero me da error en las ultimas lineas
Código Delphi [-]
 
  WorkBook.SaveAs(fname);

el mensaje dice EVariantInvalidOpError Invalid variant operation

q estoy haciendo mal?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita