Escolar Documentos
Profissional Documentos
Cultura Documentos
tina na internet, mas ela apenas abre o excel e nao aparece os dados. Eu quero g
erar um arquivo na pasta C:\FLUXOS
var excel :variant;
begin
try
excel := CreateOleObject('excel.application');
if not Excel.Application.Visible then
Excel.Application.Visible := true;
Excel.WorkBooks.Add;
Excel.Cells[1,1] := dmParcelas.cdsFLUXOCODHIS2.Value;
except
showmessage('Ocorreu erro ao executar a transferência')
end;
end;
desde ja obrigado
delphi6, com firebird, clientdataset
Voltar ao Topo
danielrsanches
Aprendiz
--------------------------------------------------
Muitas vezes precisamos de vários relatórios que se diferem pelos campos que são apres
entados. Nestas ocasiões o melhor é gerar uma planilha no excel onde o usuário pode fa
cilmente exluir as colunas que ele não precisa. Para isto criei um procedimento qu
e recebe como parâmetro o nome de um consulta (Query) e gera uma planilha com os c
ampos e registros da consulta.
Esta é mais um facilidade do Delphi.
Veja o Código:
procedure TNOMEDOFORMULÁRIO.GerarExcel(Consulta:TQuery);
var
coluna, linha: integer;
excel: variant; valor: string;
begin
try
excel:=CreateOleObject('Excel.Application');
excel.Workbooks.add(1);
except Application.MessageBox ('Versão do Ms-Excel'+
'Incompatível','Erro',MB_OK+MB_ICONEXCLAMATION);
end;
Consulta.First;
try
for linha:=0 to Consulta.RecordCount-1 do
begin
for coluna:=1 to Consulta.FieldCount do
begin
valor:= Consulta.Fields[coluna-1].AsString;
excel.cells [linha+2,coluna]:=valor;
end;
Consulta.Next;
end;
for coluna:=1 to Consulta.FieldCount do
begin
valor:= Consulta.Fields[coluna-1].DisplayLabel;
excel.cells[1,coluna]:=valor;
end;
excel.columns.AutoFit;
excel.visible:=true;
except
Application.MessageBox ('Aconteceu um erro desconhecido durante a conv
ersão'+
'da tabela para o Ms-Excel','Erro',MB_OK+MB_ICONEXCLAMATION);
end;
end;
- Substitua NOMEDOFORMULÁRIO pelo nome do formulário onde você está inserindo este proce
dimento.
- Declare o procedimento na cláusula type: procedure GerarExcel(Consulta:TQuery);
- Declare a unit ComObj na cláusula uses.
- Para chamar : GerarExcel(NOMEDACONSULTA);
----------------------------------------------------------
Trabalhando com Excel Código
{
Exemplo de como gerar um arquivo em excel formatado e pronto para a impressão.
Peço a todos que lerem esta dica e que tem algo a acrescentar, por favor mande
para o email que segue abaixo.
Roberto
rcdslf@gmail.com
11/09/2008
}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses ComObj;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Excel, Sheet : Variant;
Nome : String;
begin
//nome da planílha
Nome := 'Lacre';
//cria a aplicação
Excel := CreateOleObject('Excel.Application');
//mostra a tabela
Excel.Visible := true;
//adiciona pasta de trabalho
Excel.WorkBooks.Add;
//deleta as planilhas que sobraram
Excel.WorkBooks[1].Sheets[2].Delete;
Excel.WorkBooks[1].Sheets[2].Delete;
//planilha recebendo variável nome
Excel.WorkBooks[1].WorkSheets[1].Name := Nome;
//Repassando variável
Sheet := Excel.WorkBooks[1].WorkSheets[Nome];
(*----------------------------------------------------------------------------*)
//Largura das colunas
Sheet.Range['A1'].ColumnWidth := 1;
Sheet.Range['B1:D1'].ColumnWidth := 21.71;
Sheet.Range['E1'].ColumnWidth := 1;
(*----------------------------------------------------------------------------*)
//altura das células
Sheet.Range['A1'].RowHeight := 9;
Sheet.Range['A2'].RowHeight := 23.25;
Sheet.Range['A3'].RowHeight := 7.5;
Sheet.Range['A4'].RowHeight := 20.25;
Sheet.Range['A5'].RowHeight := 12;
Sheet.Range['A6'].RowHeight := 20.25;
Sheet.Range['A7'].RowHeight := 18;
Sheet.Range['A8'].RowHeight := 18;
Sheet.Range['A9'].RowHeight := 18;
Sheet.Range['A10'].RowHeight := 9;
(*----------------------------------------------------------------------------*)
//Mesclando Células
Sheet.Range['B2:D2'].MergeCells := true;
Sheet.Range['B4:D4'].MergeCells := true;
Sheet.Range['B6:D6'].MergeCells := true;
(*----------------------------------------------------------------------------*)
//Escrevendo nas células
Sheet.Range['B2'] := 'Cliente: Roberto Fodão';
Sheet.Range['B4'] := 'Material: 1,5 x 14mm';
Sheet.Range['B6'] := 'Referência: 3665';
Sheet.Range['B8'] := 'Para cortar tam.:';
Sheet.Range['C8'] := 'Usar Ref.:';
Sheet.Range['D8'] := 'Tam.:';
Sheet.Range['B9'] := 145;
Sheet.Range['C9'] := 4065;
Sheet.Range['D9'] := 143;
(*----------------------------------------------------------------------------*)
//Formatando células escritas
{Cliente}
Sheet.Range['B2'].Font.Name := 'Arial';
Sheet.Range['B2'].Font.Bold := true;
Sheet.Range['B2'].Font.Underline := true;
Sheet.Range['B2'].Font.Size := 18;
{Material}
Sheet.Range['B4'].Font.Name := 'Arial';
Sheet.Range['B4'].Font.Bold := true;
Sheet.Range['B4'].Font.Size := 16;
{Referência}
Sheet.Range['B6'].Font.Name := 'Arial';
Sheet.Range['B6'].Font.Bold := true;
Sheet.Range['B6'].Font.Size := 16;
{Para cortar tam / Usar ref / Tam}
Sheet.Range['B8:D8'].Font.Name := 'Arial';
Sheet.Range['B8:D8'].Font.Bold := true;
Sheet.Range['B8:D8'].Font.Size := 14;
{Itens}
Sheet.Range['B9:D9'].Font.Name := 'Arial';
Sheet.Range['B9:D9'].Font.Size := 14;
(*----------------------------------------------------------------------------*)
//Formatação Células contornos
(* ==== Espessura da linha ==== *)
{
xlHairline = $00000001 - Super-Fino
xlMedium = $FFFFEFD6 - Médio
xlThick = $00000004 - Grosso
xlThin = $00000002 - Padrão(Normal)
}
- Adicionar um Replace
Serve como um find / replace, ele procura e substiui a string por outra q deseja
.
Ele subtitiu apenas o conteúdo q vc deseja o restante da string não muda.
Sheet.Range['A1:Z70'].Replace('Tam.:', 'Num.:');
|| ||
Onde: local da pesquisa / ('Texto_Procurado', 'Subtituir_Por')
}
(*----------------------------------------------------------------------------*)
(* ==== A configuração da folha deve vir antes do preview da folha === *)
//Configuração da folha
Sheet.PageSetup.BottomMargin := 10;
Sheet.PageSetup.LeftMargin := 10;
Sheet.PageSetup.RightMArgin := 10;
Sheet.PageSetup.TopMargin := 10;
//Marcação da página no rodapé
Sheet.PageSetup.CenterFooter := '&P';
//Alinhamento centralizado do conteúdo na horizontal
Sheet.PageSetup.CenterHorizontally := true;
//Alinhamento centralizado do conteúdo na horizontal
Sheet.PageSetup.CenterVertically := true;
{Para salvar existem duas opções:
- Se for salvar a aplicação totalmente criada:
Sheet.SaveAs('destino_onde_quer_salvar');
- Se for salvar uma aplicação que foi criada a partir de um arquivo aberto
Sheet.Save;}
//Print Preview
Sheet.Range['A1:E10'].PrintPreview;
{Para imprimir na impressora padrão do seu computador
Sheet.PrintOut;
}
(*----------------------------------------------------------------------------*)