Exportar para excel em células especificas
Bom dia,
Gostaria de saber como faço para exportar e/ou importar dados para celulas especificas do excel, colocando cor e linhas de grade.
Motivo:
tenho um form que digito informações de serviços, entretanto tenho que enviar estes dados digitados em uma planilha em excel para usuários, só que esta planilha tem uma formatação, como cores em celular, fontes em negrito e com cor.
como posso fazer isso?
Gostaria de ser atendido pelo Wesley
Obrigado.
Andre Freitas
Andre Freitas
Curtidas 0
Respostas
Wesley Yamazack
25/01/2010
Olá amigo, pedindo para eu responder sai mais caro, rsrs.
Bom amigo vou fazer um exemplo para você e logo lhe mandarei peço que aguarde um pouco, ok ?
Um abraço
Wesley Y
Bom amigo vou fazer um exemplo para você e logo lhe mandarei peço que aguarde um pouco, ok ?
Um abraço
Wesley Y
GOSTEI 0
Andre Freitas
25/01/2010
Ogrigado meu amigo
GOSTEI 0
Wesley Yamazack
25/01/2010
Olá meu amigo, veja abaixo uma função que exporta os dados para excel apartir de um DataSet.
procedure TForm2.GerarXLS(DSPadrao: TDataSet); Var Lin, Col : Integer; xExcel : Variant; Conteudo : String; begin Try if DSPadrao.RecordCount < 1 then begin Application.MessageBox('Nenhum registro a ser exportado','Atenção',MB_OK Exit; end; Try xExcel:= CreateoleObject('Excel.Application'); xExcel.WorkBooks.add(1); xExcel.caption := 'Titulo da Planilha '; xExcel.visible := False; DSPadrao.DisableControls; DSPadrao.First; for Lin := 0 to DSPadrao.RecordCount - 1 do begin for Col := 1 to DSPadrao.FieldCount do begin Conteudo := DSPadrao.Fields[Col - 1].AsString; xExcel.cells[Lin + 2,Col]:= Conteudo; end; DSPadrao.Next; Application.ProcessMessages; end; for Col := 1 to DSPadrao.FieldCount do begin Conteudo := DSPadrao.Fields[Col -1].Name; xExcel.cells[1,Col] := Conteudo;{Aqui eu formato o cabeçalho para mudar cor e colocar em negritoImplemente a sua necessidade de acordo com estes recursos, caso queria colocar em negrito a coluna C1,C2, basta trocar por xExcel.Range['C1','C2'], sacou ?
}
xExcel.Range['A1','D1'].Font.bold := true; // Negrito xExcel.Range['A1','D1'].Interior.Color := $00D6D6D6; // Cor da Célula xExcel.Range['A1','D1'].RowHeight := 25; //Altura da Célula end; xExcel.visible := True; xExcel.columns.Autofit; //Alinhar automaticamete o tamanho da coluna finally DSPadrao.EnableControls; Enabled := True; end; Except on e : Exception do raise Exception.Create('Erro ao exportar planilha ' +#13+ '================'+#13+#13+ 'Menssagem : ' + E.Message +#13+ 'Classe : ' + E.ClassName); end; end;{No evento que você deseja exportar os dados}
procedure TForm2.Button1Click(Sender: TObject); begin GerarXLS(DSServicos.DataSet); end;
Meu amigo espero que isso lhe ajude.
Um abraço
Wesley Y
procedure TForm2.GerarXLS(DSPadrao: TDataSet); Var Lin, Col : Integer; xExcel : Variant; Conteudo : String; begin Try if DSPadrao.RecordCount < 1 then begin Application.MessageBox('Nenhum registro a ser exportado','Atenção',MB_OK Exit; end; Try xExcel:= CreateoleObject('Excel.Application'); xExcel.WorkBooks.add(1); xExcel.caption := 'Titulo da Planilha '; xExcel.visible := False; DSPadrao.DisableControls; DSPadrao.First; for Lin := 0 to DSPadrao.RecordCount - 1 do begin for Col := 1 to DSPadrao.FieldCount do begin Conteudo := DSPadrao.Fields[Col - 1].AsString; xExcel.cells[Lin + 2,Col]:= Conteudo; end; DSPadrao.Next; Application.ProcessMessages; end; for Col := 1 to DSPadrao.FieldCount do begin Conteudo := DSPadrao.Fields[Col -1].Name; xExcel.cells[1,Col] := Conteudo;{Aqui eu formato o cabeçalho para mudar cor e colocar em negritoImplemente a sua necessidade de acordo com estes recursos, caso queria colocar em negrito a coluna C1,C2, basta trocar por xExcel.Range['C1','C2'], sacou ?
}
xExcel.Range['A1','D1'].Font.bold := true; // Negrito xExcel.Range['A1','D1'].Interior.Color := $00D6D6D6; // Cor da Célula xExcel.Range['A1','D1'].RowHeight := 25; //Altura da Célula end; xExcel.visible := True; xExcel.columns.Autofit; //Alinhar automaticamete o tamanho da coluna finally DSPadrao.EnableControls; Enabled := True; end; Except on e : Exception do raise Exception.Create('Erro ao exportar planilha ' +#13+ '================'+#13+#13+ 'Menssagem : ' + E.Message +#13+ 'Classe : ' + E.ClassName); end; end;{No evento que você deseja exportar os dados}
procedure TForm2.Button1Click(Sender: TObject); begin GerarXLS(DSServicos.DataSet); end;
Meu amigo espero que isso lhe ajude.
Um abraço
Wesley Y
GOSTEI 0
Wesley Yamazack
25/01/2010
Olá meu amigo, consegui analisar o exemplo ?
Um abraço
Wesley Y
Um abraço
Wesley Y
GOSTEI 0
Andre Freitas
25/01/2010
Obrigado meu amigo,
Vou testar
GOSTEI 0
Andre Freitas
25/01/2010
Obrigado meu amigo,
Vou testar
GOSTEI 0
Wesley Yamazack
25/01/2010
Olá amigo,
Fico no aguardo então.
Um abraço
Wesley Y
Fico no aguardo então.
Um abraço
Wesley Y
GOSTEI 0
Andre Freitas
25/01/2010
Olá amigo,
aqui estou para informa que está ocorrendo erros na complição, criei um disco vitual para facilitar sua ajuda.
segue caminho
http://video.devmedia.com.br/discovirtual/216474/AcompEquipe_Exportar.rar
até Andre.
GOSTEI 0
Wesley Yamazack
25/01/2010
Olá amigo,
Irei analisar o arquivo.
Um Abraço
Wesley Y
Irei analisar o arquivo.
Um Abraço
Wesley Y
GOSTEI 0
Wesley Yamazack
25/01/2010
Olá amigo,
O erro do CreateOleObject, você tem que dar uses em ComObj;
E o outro erro, é que a procedure que te passei, ela pede um componente do tipo TDataSet, mas você não pode passar, cds.dataset, mas sim somente o cds, pois ele já é um TDataSet, sacou ?
Um abraço
Wesley Y
O erro do CreateOleObject, você tem que dar uses em ComObj;
E o outro erro, é que a procedure que te passei, ela pede um componente do tipo TDataSet, mas você não pode passar, cds.dataset, mas sim somente o cds, pois ele já é um TDataSet, sacou ?
Um abraço
Wesley Y
GOSTEI 0