D� uma olhada nesse meu c�digo e v c t ajuda ae:
unit Uextotais;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Buttons, StdCtrls, Mask, ToolEdit, Db, IBCustomDataSet, IBQuery,
Grids, DBGrids, OleServer, Excel97, RXDBCtrl;
type
TFRMExTotais = class(TForm)
ExcelWorksheet1: TExcelWorksheet;
ExcelApplication1: TExcelApplication;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
SpeedButton1: TSpeedButton;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
DateEdit1: TDateEdit;
DateEdit2: TDateEdit;
BTNIniciar: TBitBtn;
procedure Titulos;
procedure SpeedButton1Click(Sender: TObject);
procedure BTNIniciarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FRMExTotais: TFRMExTotais;
implementation
uses udata, ubusfor;
{$R *.DFM}
procedure TFRMExTotais.Titulos;
begin
ExcelWorksheet1.Range['A1','A1'].Value:='N� do Item';
ExcelWorksheet1.Range['B1','B1'].Value:='Quant. Pedida';
ExcelWorksheet1.Range['C1','C1'].Value:='Custo Total';
ExcelWorksheet1.Range['D1','D1'].Value:='Det.';
ExcelWorksheet1.Range['E1','E1'].Value:='N� da Conta';
ExcelWorksheet1.Range['F1','F1'].Value:='Uni. Neg.';
ExcelWorksheet1.Range['G1','G1'].Value:='Cta. Obj.';
ExcelWorksheet1.Range['H1','H1'].Value:='ID Ativo';
end;
procedure TFRMExTotais.SpeedButton1Click(Sender: TObject);
begin
Fbusfor.showmodal;
Edit1.Text:=dmcf.qemp1EMPCOD.AsString;
end;
procedure TFRMExTotais.BTNIniciarClick(Sender: TObject);
var lcid,linha:integer;
WkBk:_Workbook;
begin
begin
dmcf.IBQExTotais.Close;
dmcf.IBQExTotais.SQL.Clear;
dmcf.IBQExTotais.SQL.Add('select iteijd,sum(conqtd) as
quantidade,sum(convlu*conqtd) as valor, veiune,itegru,veiida as ID_ATIVO
from consumo,item,veiculo');
dmcf.IBQExTotais.SQL.Add('where conite=itecod and conplc=veiplc and
conemp=:posto and condte>=:dtini and condte<=:dtfin');
dmcf.IBQExTotais.SQL.Add('group by
conite,conplc,itegru,itecod,iteijd,veiida,veiune');
dmcf.IBQExTotais.Params[0].AsString:=Edit1.Text;
dmcf.IBQExTotais.Params[1].AsDate:=DateEdit1.Date;
dmcf.IBQExTotais.Params[2].AsDate:=DateEdit2.Date;
dmcf.IBQExTotais.Open;
if dmcf.IBQExTotais.RecordCount<>0 then
begin
lcid := GetUserDefaultLCID;
ExcelApplication1.Visible[lcid] := true;
WkBk:=ExcelApplication1.Workbooks.Add(EmptyParam, lcid);
ExcelWorksheet1.ConnectTo(WkBk.Worksheets[1] as _Worksheet);
ExcelWorksheet1.Activate(LCID);
ExcelApplication1.ScreenUpdating[lcid]:=true;
ExcelWorksheet1.Name := 'Relat�rios via Excel';
Titulos;
linha:=2;
dmcf.IBQExTotais.First;
while dmcf.IBQExTotais.Eof=false do
begin
ExcelWorksheet1.Range['A'+IntToStr(linha),'A'+IntToStr(linha)].Value:=dmcf.IBQExTotaisITEIJD.AsString;
ExcelWorksheet1.Range['B'+IntToStr(linha),'B'+IntToStr(linha)].Value:=dmcf.IBQExTotaisQUANTIDADE.AsFloat;
ExcelWorksheet1.Range['C'+IntToStr(linha),'C'+IntToStr(linha)].Value:=dmcf.IBQExTotaisVALOR.AsFloat;
ExcelWorksheet1.Range['D'+IntToStr(linha),'D'+IntToStr(linha)].Value:=dmcf.IBQExTotaisID_ATIVO.AsString;
ExcelWorksheet1.Range['E'+IntToStr(linha),'E'+IntToStr(linha)].Value:=dmcf.IBQExTotaisVEIUNE.AsString+'.'+dmcf.IBQExTotaisITEGRU.AsString+'.'+dmcf.IBQExTotaisID_ATIVO.AsString;
ExcelWorksheet1.Range['F'+IntToStr(linha),'F'+IntToStr(linha)].Value:=dmcf.IBQExTotaisVEIUNE.AsString;
ExcelWorksheet1.Range['G'+IntToStr(linha),'G'+IntToStr(linha)].Value:=dmcf.IBQExTotaisITEGRU.AsString;
ExcelWorksheet1.Range['H'+IntToStr(linha),'H'+IntToStr(linha)].Value:=dmcf.IBQExTotaisID_ATIVO.AsString;
dmcf.IBQExTotais.Next;
linha:=linha+1;
end;
Edit1.Clear;
DateEdit1.Clear;
DateEdit2.Clear;
end
else
MessageDlg('Nenhum registro
encontrado',mtInformation,[mbok],0);
end;
end;
end.
----- Original Message -----
From: "Carlos Alberto" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, September 14, 2004 10:43 PM
Subject: [delphi-br] Exportar para Excel
Estou querendo exportar dados de um DBGrid para excel e estudando a
exporta�� de dados a Excel escrevi este procedimento porem parece que o
mesmo est� imcompleto ou com erro pois quando executo ele pela primeira fez
ele funciona por�m na segunda vez ele tranca na linha
"Planilha.SaveAs('Teste.xls');" dando a seguinte mensagem "N�o � poss�vel
acessar " 'Teste.xls' ".
Ap�s fechar o programa e indo ao diret�rio onde foi gravado pela primeira
vez e tento apagar o Windos diz que o arquivo est� sendo utilizado pelo
Excel. Alguma dica
Uses ComObj
procedure TForm1.Button1Click(Sender: TObject);
var
Excel, Planilha : OleVariant;
begin
try
Excel:=CreateOleObject('Excel.Application');
except
ShowMessage('O programa Excel n�o pode iniciar');
exit;
end;
Excel.WorkBooks.Add;
Planilha := Excel.WorkBooks[1].Sheets[1];
Planilha.Cells.Item[1,1] := 'C�digo';
Planilha.Cells.Item[1,2] := 'Descri��o';
Planilha.SaveAs('Teste.xls');
Planilha.Close;
end;
[As partes desta mensagem que n�o continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]
Links do Yahoo! Grupos
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
<*> O uso que voc� faz do Yahoo! Grupos est� sujeito aos:
http://br.yahoo.com/info/utos.html