PDA

Ver la Versión Completa : Migracion a excel


oscarac
07-07-2011, 07:46:55
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

_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

WorkBook.SaveAs(fname);



el mensaje dice EVariantInvalidOpError Invalid variant operation

q estoy haciendo mal? :(

LoPiTaL
07-07-2011, 09:02:17
Me imagino que te voy a comentar una bobada, que seguramente la hayas omitido por acortar el código, pero en el código que has citado, la variable "Workbook" con la que haces el SaveAs no está inicializada...

Un saludo,
LoPiTaL