Fórum Tabelas Dinâmicas #193924

10/11/2003

0

Alguém sabe fazer ou onde encotrar algo que fale sobre este recurso do excel. Estou desenvolvendo uma aplicação, e tenho que gerar uma tabela dinâmica no excel. Não estou conseguindo me acertar com os componentes da paleta servers.

muito obrigado


marcelo


Biffi

Biffi

Responder

Posts

10/11/2003

Marconi

Ai vai um exemplo que utilizo e dá certo.

Na listagem tem as relações com minhas tabelas (dm.Test). Mude para as suas.
No exemplo coloquei no form um objeto TExelApplication que renomei para XLApp.

procedure TFrmListaEstoque.BitBtn4Click(Sender: TObject);
var
WorkBk : _WorkBook; // Define a WorkBook
WorkSheet : _WorkSheet; // Define a WorkSheet
I, J, R, C, K : Integer;
IIndex : OleVariant;
TabGrid : Variant;
begin
IIndex := 1;
R := dm.Test.recordcount+1; // número de linhas
C := 17; // número de colunas
// Create the Variant Array
TabGrid := VarArrayCreate([0,(R-1),0,(C-1)],VarOleStr);
// Cabeçalho------------------------------------------------------------------
TabGrid[0,0] :=´Código´;
TabGrid[0,1] :=´Curta´;
TabGrid[0,2] :=´Descrição´;
TabGrid[0,3] :=´Medidas´;
TabGrid[0,4] :=´Unidade´;
TabGrid[0,5] :=´Armário´;
TabGrid[0,6] :=´Gaveta´;
TabGrid[0,7] :=´Divisão´;
TabGrid[0,8] :=´Estoque´;
TabGrid[0,9] :=´Mínimo´;
TabGrid[0,10]:=´Unitário´;
TabGrid[0,11]:=´R$ Última Compra´;
TabGrid[0,12]:=´US$ Última Compra´;
TabGrid[0,13]:=´Data Última Compra´;
TabGrid[0,14]:=´Observações´;
TabGrid[0,15]:=´Cúpulas´;
//---------------------------------------------------------------------------
I := 1;
// Define the loop for filling in the Variant
dm.Test.first;
while not dm.Test.eof do begin
if dm.Test[´codigo´] <> null then TabGrid[I,0] := dm.Test[´codigo´];
if dm.Test[´curta´] <> null then TabGrid[I,1] := dm.Test[´curta´];
if dm.Test[´descricao´] <> null then TabGrid[I,2] := dm.Test[´descricao´];
if dm.Test[´medidas´] <> null then TabGrid[I,3] := dm.Test[´medidas´];
if dm.Test[´unidade´] <> null then TabGrid[I,4] := dm.Test[´unidade´];
if dm.Test[´prateleira´] <> null then TabGrid[I,5] := dm.Test[´prateleira´];
if dm.Test[´nivel´] <> null then TabGrid[I,6] := dm.Test[´nivel´];
if dm.Test[´gaveta´] <> null then TabGrid[I,7] := dm.Test[´gaveta´];
if dm.Test[´estoque´] <> null then TabGrid[I,8] := floatTostrf(dm.Test[´estoque´],ffFixed,10,3);
if dm.Test[´minimo´] <> null then TabGrid[I,9] := floatTostrf(dm.Test[´minimo´],ffFixed,10,0);
if dm.Test[´unitario´] <> null then TabGrid[I,10] := floatTostrf(dm.Test[´unitario´],ffCurrency,10,2);
if dm.Test[´valorultcompra´] <> null then TabGrid[I,11] := floatTostrf(dm.Test[´valorUltCompra´],ffCurrency,10,2);
if dm.Test[´valorultcompradolares´] <> null then TabGrid[I,12] := floatTostrf(dm.Test[´valorUltCompraDolares´],ffFixed,10,2);
if dm.Test[´dataultcompra´] <> null then TabGrid[I,13] := datetostr(dm.Test[´dataultcompra´]);
if dm.Test[´observacoes´] <> null then TabGrid[I,14] := dm.Test[´observacoes´];
if dm.Test[´fazparte´] <> null then TabGrid[I,15] := dm.Test[´fazparte´];
dm.Test.next;
inc(I);
end;
// Connect to the server TExcelApplication
XLApp.Connect;
// Add WorkBooks to the ExcelApplication
XLApp.WorkBooks.Add(xlWBatWorkSheet,0);
// Select the first WorkBook
WorkBk := XLApp.WorkBooks.Item[IIndex];
// Define the first WorkSheet
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
// Assign the Delphi Variant Matrix to the Variant associated with the WorkSheet
Worksheet.Range[´A1´,Worksheet.Cells.Item[R,C]].Value := TabGrid;
// Customise the WorkSheet
WorkSheet.Name := ´Relatório de Estoque da Oficina´;
Worksheet.Columns.Font.Bold := False;
Worksheet.Columns.HorizontalAlignment := xlRight;
WorkSheet.Columns.ColumnWidth := 14;
// Customizando a Planilha de acordo com o Relatório
WorkSheet.Range[´A´ + IntToStr(1),´P´ + IntToStr(1)].Font.Color := clNavy;
WorkSheet.Range[´A´ + IntToStr(1),´P´ + IntToStr(1)].Font.Bold := True;
WorkSheet.Range[´A´ + IntToStr(1),´P´ + IntToStr(1)].Interior.color:=clyellow;
WorkSheet.Range[´A´ + IntToStr(1),´P´ + IntToStr(R)].HorizontalAlignment := xlHAlignCenter;
WorkSheet.Range[´B´ + IntToStr(2),´C´ + IntToStr(R)].HorizontalAlignment := xlHAlignLeft;
WorkSheet.Range[´O´ + IntToStr(2),´P´ + IntToStr(R)].HorizontalAlignment := xlHAlignLeft;
WorkSheet.Range[´K´ + IntToStr(2),´M´ + IntToStr(R)].HorizontalAlignment := xlHAlignRight;
WorkSheet.Range[´A´ + IntToStr(1),´A´ + IntToStr(R)].ColumnWidth :=10;
WorkSheet.Range[´B´ + IntToStr(1),´B´ + IntToStr(R)].ColumnWidth :=25;
WorkSheet.Range[´C´ + IntToStr(1),´C´ + IntToStr(R)].ColumnWidth :=54;
WorkSheet.Range[´D´ + IntToStr(1),´N´ + IntToStr(R)].ColumnWidth :=20;
WorkSheet.Range[´O´ + IntToStr(1),´O´ + IntToStr(R)].ColumnWidth :=85;
WorkSheet.Range[´P´ + IntToStr(1),´P´ + IntToStr(R)].ColumnWidth :=25;
I:=3;
repeat
WorkSheet.Range[´A´ + IntToStr(I),´P´ + IntToStr(I)].Interior.color:=clsilver;
inc(I);Inc(I);
until I > R; // Show Excel
XLApp.Visible[0] := True;
// Disconnect the Server
XLApp.Disconnect;
// Unassign the Delphi Variant Matrix
TabGrid := Unassigned;
end

Marconi


Responder

Gostei + 0

10/11/2003

Marconi

A tempo
coloque na clausula USES.

OleServer, Excel97;

Marconi


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar