PDA

Ver la Versión Completa : Abrir plantilla Excel y pasarle datos


Jose Manuel
29-05-2004, 19:57:35
Hola, estoy trabajado D6 Enterprise y en una aplicación que tengo, quisiera poder abrir un plantilla excel y pasarle datos de un Base de Datos.
He visto algunos ejemplos, pero al ponerlos en practica no me funcionan, yo he puesto dos botones, uno para abrir excel y otro para cerrarlo, pero solo se abre una vez y ya no puedo volver a abrirla.

Este es el codigo, por si alguien me dice que está mal.

Un saludo a todos
Jose Manuel

.........................................................................


procedure Tfresumen.Btn_pasar_a_excelClick(Sender: TObject);
var
aLCID,x,y : Integer;
sValue:String;
begin
// Abrir plantilla de excel
aLCID := GetUserDefaultLCID;
ArchivoXL := ExtractFilePath(ParamStr(0))+'resumen.xls'; //Plantilla EXCEL
ExcelApplication1.Connect;
ExcelApplication1.Visible[aLCID] := True;
ExcelApplication1.UserControl := True;
ExcelApplication1.Workbooks.Open(archivoXL, False, False,
EmptyParam,'',False,False,EmptyParam,
EmptyParam,false,false,EmptyParam,false,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkBook);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets.Item[1] as _Worksheet);
ExcelWorksheet1.PageSetup.LeftHeader := 'resumen';
end;

procedure Tfresumen.Btn_Cerrar_ExcelClick(Sender: TObject);
begin
ExcelWorksheet1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;

rpadin
01-06-2004, 10:58:55
Buenos días.

Tengo un ejemplo completo, pero como no me lo deja insertar todo de una vez te lo divido en dos

---------------INICIO PRIMERA PARTE -------------

procedure TConcesionForm.BtnExportarExcelClick(Sender: TObject);
var
creado:boolean;
fila: integer;
Excel : Variant;
Arquivo, PlantillaXLS, nome_columna_1, nome_columna_2 : String;
begin

creado:= false;
PlantillaXLS:= DM.ConcesionPlantillaXLS;

InfoConcesion.ParamByName('id_concesion').AsInteger:= nID;
InfoConcesion.Open;
InfoConcesionDatTecnicos.open;
InfoConcesionIncidencias.open;
InfoConcesionAccionistas.open;
if InfoConcesion.FindFirst
Then
Begin
if SaveDialog1.Execute
then Arquivo:= SaveDialog1.FileName;

if length(trim(Arquivo)) > 0
Then
Begin
try
Excel := CreateOleObject('Excel.Application');
if Length(Trim(PlantillaXLS)) > 0
Then Excel.Workbooks.Open(PlantillaXLS)
Else Excel.Workbooks.Add;
creado:=true;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+1, DM.ConcesionPlantillaXLSColumnaIni+8].Value:=DateToStr(Date);
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+3, DM.ConcesionPlantillaXLSColumnaIni+8].Value:=TimeToStr(Now);

InfoConcesion.First;
while not InfoConcesion.Eof do
Begin
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+5, DM.ConcesionPlantillaXLSColumnaIni+1].Value:=InfoConcesion.FieldByName('frecuencia').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+5, DM.ConcesionPlantillaXLSColumnaIni+2].Value:=InfoConcesion.FieldByName('localidad').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+5, DM.ConcesionPlantillaXLSColumnaIni+5].Value:=InfoConcesion.FieldByName('provincia').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+5, DM.ConcesionPlantillaXLSColumnaIni+8].Value:=InfoConcesion.FieldByName('estado').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+7, DM.ConcesionPlantillaXLSColumnaIni+1].Value:=InfoConcesion.FieldByName('modalidad').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+7, DM.ConcesionPlantillaXLSColumnaIni+4].Value:=InfoConcesion.FieldByName('fecha_concesion').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+7, DM.ConcesionPlantillaXLSColumnaIni+6].Value:=InfoConcesion.FieldByName('fecha_caducidad').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+7, DM.ConcesionPlantillaXLSColumnaIni+8].Value:=InfoConcesion.FieldByName('control').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+9, DM.ConcesionPlantillaXLSColumnaIni+1].Value:=InfoConcesion.FieldByName('cif').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+9, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesion.FieldByName('sociedad').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+11, DM.ConcesionPlantillaXLSColumnaIni+1].Value:=InfoConcesion.FieldByName('dcadena').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+11, DM.ConcesionPlantillaXLSColumnaIni+5].Value:=InfoConcesion.FieldByName('dprogramacion').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+13, DM.ConcesionPlantillaXLSColumnaIni+1].Value:=InfoConcesion.FieldByName('Observaciones').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+18, DM.ConcesionPlantillaXLSColumnaIni+1].Value:=InfoConcesionDatTecnicos.FieldByName('n_colegio').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+18, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesionDatTecnicos.FieldByName('ingeniero').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+20, DM.ConcesionPlantillaXLSColumnaIni+2].Value:=InfoConcesionDatTecnicos.FieldByName('fecha_aprobacion').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+20, DM.ConcesionPlantillaXLSColumnaIni+4].Value:=InfoConcesionDatTecnicos.FieldByName('referencia').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+20, DM.ConcesionPlantillaXLSColumnaIni+7].Value:=InfoConcesionDatTecnicos.FieldByName('denominacion').AsString;


Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+21, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesionDatTecnicos.FieldByName('longitud').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+21, DM.ConcesionPlantillaXLSColumnaIni+5].Value:=InfoConcesionDatTecnicos.FieldByName('latitud').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+21, DM.ConcesionPlantillaXLSColumnaIni+8].Value:=InfoConcesionDatTecnicos.FieldByName('cota').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+22, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesionDatTecnicos.FieldByName('pra').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+22, DM.ConcesionPlantillaXLSColumnaIni+5].Value:=InfoConcesionDatTecnicos.FieldByName('marca').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+22, DM.ConcesionPlantillaXLSColumnaIni+8].Value:=InfoConcesionDatTecnicos.FieldByName('car').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+23, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesionDatTecnicos.FieldByName('p_max_tx').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+23, DM.ConcesionPlantillaXLSColumnaIni+7].Value:=InfoConcesionDatTecnicos.FieldByName('p_max_auto').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+24, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesionDatTecnicos.FieldByName('directividad').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+25, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesionDatTecnicos.FieldByName('h_mastil').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+26, DM.ConcesionPlantillaXLSColumnaIni+3].Value:=InfoConcesionDatTecnicos.FieldByName('h_s_suelo').AsString;

Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+24, DM.ConcesionPlantillaXLSColumnaIni+5].Value:=InfoConcesionDatTecnicos.FieldByName('polaridad').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+25, DM.ConcesionPlantillaXLSColumnaIni+5].Value:=InfoConcesionDatTecnicos.FieldByName('s_radiante').AsString;
Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+26, DM.ConcesionPlantillaXLSColumnaIni+5].Value:=InfoConcesionDatTecnicos.FieldByName('hefecm').AsString;

if InfoConcesionDatTecnicos.FieldByName('balizamiento').AsInteger = 0
Then Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+24, DM.ConcesionPlantillaXLSColumnaIni+8].Value:= 'No'
Else Excel.Cells[DM.ConcesionPlantillaXLSFilaIni+24, DM.ConcesionPlantillaXLSColumnaIni+8].Value:= 'Si';



---------------FIN PRIMERA PARTE -------------

Un saludo
Ramiro

rpadin
01-06-2004, 10:59:55
Buenos días.

Tengo un ejemplo completo, pero como no me lo deja insertar todo de una vez te lo divido en dos

---------------INICIO SEGUNDA PARTE -------------

//Accionistas
if InfoConcesionAccionistas.FindFirst
Then
Begin
InfoConcesionAccionistas.First;
nome_columna_1:= DameColumnaExcel(DM.ConcesionPlantillaXLSColumnaIni+2);
nome_columna_2:= DameColumnaExcel(DM.ConcesionPlantillaXLSColumnaIni+2+6);
fila:= DM.ConcesionPlantillaXLSFilaIni+5;
while not InfoConcesionAccionistas.Eof do
Begin
Excel.Sheets[2].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].RowHeight:= Excel.Sheets[3].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].RowHeight*2;
Excel.Sheets[2].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].WrapText:= true;

try
Excel.Sheets[2].Cells.Range[nome_columna_1+IntToStr(fila),nome_columna_2+IntToStr(Fila)].Merge;
except
End;

Excel.Sheets[2].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+1].Value:= InfoConcesionAccionistas.FieldByName('porcentaje').AsString;
Excel.Sheets[2].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].Value:= InfoConcesionAccionistas.FieldByName('Accionista').AsString;
fila:= fila+1;
InfoConcesionAccionistas.Next;
End;
End;

//Incidencias
if InfoConcesionIncidencias.FindFirst
Then
Begin
InfoConcesionIncidencias.First;
fila:= DM.ConcesionPlantillaXLSFilaIni+5;
nome_columna_1:= DameColumnaExcel(DM.ConcesionPlantillaXLSColumnaIni+2);
nome_columna_2:= DameColumnaExcel(DM.ConcesionPlantillaXLSColumnaIni+2+6);

while not InfoConcesionIncidencias.Eof do
Begin
Excel.Sheets[3].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].RowHeight:= Excel.Sheets[3].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].RowHeight*3;
Excel.Sheets[3].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].WrapText:= true;

try
Excel.Sheets[3].Cells.Range[nome_columna_1+IntToStr(fila),nome_columna_2+IntToStr(Fila)].Merge;
except
End;

Excel.Sheets[3].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+1].Value:= InfoConcesionIncidencias.FieldByName('fecha').AsString;
Excel.Sheets[3].Cells[fila, DM.ConcesionPlantillaXLSColumnaIni+2].Value:= InfoConcesionIncidencias.FieldByName('descripcion').AsString;
fila:= fila+1;
InfoConcesionIncidencias.Next;
End;
End;

InfoConcesion.Next;
End;
except
Excel.Quit;
showmessage('No se pudo crear el Objecto Excel.');
InfoConcesion.Close;
raise;
end;
if creado
Then Excel.ActiveWorkbook.saveas(Arquivo);
Excel.quit;

End
Else showmessage('No se pudo realizar la exportación a un fichero Excel'+#13+'porque no se ha indicado un nombre para el fichero de destino');
End
Else showmessage('No se pudo realizar la exportación a un fichero Excel'+#13+'porque no se han encontrado datos.');
InfoConcesionDatTecnicos.Close;
InfoConcesionIncidencias.Close;
InfoConcesionAccionistas.Close;
InfoConcesion.Close;
end;

---------------FIN SEGUNDA PARTE -------------

Un saludo
Ramiro