Você está na página 1de 4

//S vou melhorar um pouco as dicas que tem aqui.. faam bom proveito dela. procedure TForm1.

Button1Click(Sender: TObject); var objExcel,Sheet,Chart,s : Variant; cTitulo : string; i : integer; begin //OBS: Voce deve usar a Clausula ComObj no USES para usar o EXCEL // Utilize tambm a Clausula Clipbrd pois neste exemplo faremos uso da memria // Cria uma instancia para utilizar o Excel cTitulo := 'Planilha de Teste'; objExcel := CreateOleObject('Excel.Application'); objExcel.Visible := True; objExcel.Caption := cTitulo; // Caso queria abrir uma planilha ao invz de gera-la use os comandos abaixo //objExcel.Workbooks.Open('c:teste.xls'); //Sheet := objExcel.Workbooks[1].WorkSheets[cTitulo]; // Daqui em diante os comandos na Planilha so os mesmos do resto do Exemplo //Sheet.Range['A1','Z70'].Replace('Nome','Alterado'); // Adiciona planilha(sheet) objExcel.Workbooks.Add; objExcel.Workbooks[1].Sheets.Add; objExcel.Workbooks[1].WorkSheets[1].Name := cTitulo; Sheet := objExcel.Workbooks[1].WorkSheets[cTitulo]; // possivel copiar um valor da memria diretamente para a planilha // mas como no se tem controle de onde ele ser colado, este processo pode // ser meio inconveniente //Clipboard.AsText := 'Linha Copiada para Memria'; //Sheet.paste; // Nota: // Pode-se preencher as linhas usando o comando abaixo, desta forma vc usaria // a planilha como se ela fosse uma Array, em alguns casos pode ser interessante // mas no geral considero bem mais trabalhoso, abaixo demonstro outra forma de t rabalho // usando o RANGE que torna o trabalho bem mais simples //Sheet.Cells[1,1] := 'Coluna[1,1]'; // Preenchendo as Colunas // Usando o RANGE vc pode preencher vrias colunas ao mesmo tempo usando ['A1','A1 0'] // Ou preencher apenas uma usando ['A1'], isso torna o processo gil e simples Sheet.Range['A1'] := 'Cdigo'; Sheet.Range['B1'] := 'Nome'; Sheet.Range['C1'] := 'Fone'; Sheet.Range['D1'] := 'Salrio'; // por aqui tu limparias a planilha // No caso do FOR se torna interessante usar o SHEET.CELLS (veja como) // Atente que usei o FOR a partir do numero 2 desta forma pularemos a // primeira linha que ja contem um cabealho preenchido acima for i := 2 to 10 do begin Sheet.Cells[i,1] := i;

Sheet.Cells[i,2] := 'Nome Cliente '+inttostr(i); Sheet.Cells[i,3] := 'Fone Cliente '+inttostr(i); // Formata o Numero para se tornar MOEDA Sheet.Cells[i,4].NumberFormat := 'R$ #.##0,00_);(R$ #.##0,00)'; Sheet.Cells[i,4] := 1000*i; end; // Formatando o Cabealho Sheet.Range['A1','D1'].font.name := 'Verdana'; // Fonte Sheet.Range['A1','D1'].font.size := 12; // Tamanho da Fonte Sheet.Range['A1','D1'].font.bold := true; // Negrito Sheet.Range['A1','D1'].font.italic := true; // Italico Sheet.Range['A1','D1'].font.color := clYellow; // Cor da Fonte Sheet.Range['A1','D1'].Interior.Color := $00ffcf9c; // Cor da Clula // Define o tamanho das Colunas (basta fazer em uma delas e as demais sero altera das) Sheet.Range['B1','C1' ].ColumnWidth := 27; Sheet.Range['B1','C1' ].RowHeight := 25; Sheet.Range['D1'] .ColumnWidth := 16; // Outras formas de Formatar Sheet.Range['E1'] := 'Subscrito'; Sheet.Range['E2'] := 'Superescrito'; Sheet.Range['E3'] := 'Sublinhado'; Sheet.Range['E4'] := 'Strike'; Sheet.Range['E1'].font.Subscript := true; // Subscrito Sheet.Range['E2'].font.Superscript := true; // Superescrito Sheet.Range['E3'].font.Underline := true; // Sublinhado Sheet.Range['E4'].font.Strikethrough := true; // Strike // Colocando a Borda em um unico lado da Clula Sheet.Range['E5'].Font.size := 7; Sheet.Range['E5'].ColumnWidth := 20; Sheet.Range['E5'] := 'S um lado da Celula com Borda'; Sheet.Range['E5'].Borders.Item[$00000009].Weight := $FFFFEFD6; Sheet.Range['E5'].Borders.Item[$00000009].Color := clRed; //-- Espessura da Linha //======================== {xlHairline = $00000001; xlMedium = $FFFFEFD6; xlThick = $00000004; xlThin = $00000002;} //-- Posio da Celula que se deseja colocar a Borda //===================================================== {xlInsideHorizontal = $0000000C; xlInsideVertical = $0000000B; xlDiagonalDown = $00000005; xlDiagonalUp = $00000006; xlEdgeBottom = $00000009; xlEdgeLeft = $00000007; xlEdgeRight = $0000000A; xlEdgeTop = $00000008;} // Incluindo Formulas (a formula deve ser incluida com seu nome original em Ingls // caso contrrio podera ocorrer problemas) Sheet.Cells[i,3] := 'Total R$'; // Na linha abaixo inclui uma soma e converti para Moeda atravez do NUMBERFORMAT Sheet.Cells[i,4].NumberFormat := 'R$ #.##0,00_);(R$ #.##0,00)'; Sheet.Cells[i,4].formula := '=SUM(D210)';

// Alinhando as Clulas Sheet.Range['A1'].VerticalAlignment := 1; // 1=Top - 2=Center - 3=Bottom Sheet.Range['B1'].VerticalAlignment := 2; Sheet.Range['C1'].VerticalAlignment := 3; Sheet.Range['B1'].HorizontalAlignment := 3; // 3=Center - 4=Right Sheet.Range['C1'].HorizontalAlignment := 3; Sheet.Range['D1'].HorizontalAlignment := 4; // Adiciona Grade nas Colunas Sheet.Range['A1','D11'].Borders.LineStyle := 1; Sheet.Range['A1','D11'].Borders.Weight := 2; Sheet.Range['A1','D11'].Borders.ColorIndex := 1; // Excecuta um Replace na Celula localizada // Lembre-se que ele alterara todas as celulas localizadas dentro // do RANGE escolhido, ou seja, se ouverem 10 Colunas com o texto // desejado este comando alterara as 10 Sheet.Range['A1','Z70'].Replace('Fone Cliente 10','Repassou o Texto'); // Cria Grafico Sheet.ChartObjects.Add(10,160,450,130); // Coordenadas (Left,Top,Width,Height) Chart := Sheet.ChartObjects[1]; // Cria o Grafico Chart.Chart.ChartType := $FFFFEFFA; // Tipo do Grafico (veja tabela abaixo) Chart.Chart.SeriesCollection.Add(Sheet.Range['D210']); // Pode-se dar um PrintPreview apenas no Grfico, use o comando abaixo //Chart.Chart.PrintPreview; //--TIPOS DE GRAFICOS //====================== {xlColumnClustered = $00000033; xlColumnStacked = $00000034; xlColumnStacked100 = $00000035; xl3DColumnClustered = $00000036; xl3DColumnStacked = $00000037; xl3DColumnStacked100 = $00000038; xlBarClustered = $00000039; xlBarStacked = $0000003A; xlBarStacked100 = $0000003B; xl3DBarClustered = $0000003C; xl3DBarStacked = $0000003D; xl3DBarStacked100 = $0000003E; xlLineStacked = $0000003F; xlLineStacked100 = $00000040; xlLineMarkers = $00000041; xlLineMarkersStacked = $00000042; xlLineMarkersStacked100 = $00000043; xlPieOfPie = $00000044; xlPieExploded = $00000045; xl3DPieExploded = $00000046; xlBarOfPie = $00000047; xlXYScatterSmooth = $00000048; xlXYScatterSmoothNoMarkers = $00000049; xlXYScatterLines = $0000004A; xlXYScatterLinesNoMarkers = $0000004B; xlAreaStacked = $0000004C; xlAreaStacked100 = $0000004D; xl3DAreaStacked = $0000004E; xl3DAreaStacked100 = $0000004F;

xlDoughnutExploded = $00000050; xlRadarMarkers = $00000051; xlRadarFilled = $00000052; xlSurface = $00000053; xlSurfaceWireframe = $00000054; xlSurfaceTopView = $00000055; xlSurfaceTopViewWireframe = $00000056; xlBubble = $0000000F; xlBubble3DEffect = $00000057; xlStockHLC = $00000058; xlStockOHLC = $00000059; xlStockVHLC = $0000005A; xlStockVOHLC = $0000005B; xlCylinderColClustered = $0000005C; xlCylinderColStacked = $0000005D; xlCylinderColStacked100 = $0000005E; xlCylinderBarClustered = $0000005F; xlCylinderBarStacked = $00000060; xlCylinderBarStacked100 = $00000061; xlCylinderCol = $00000062; xlConeColClustered = $00000063; xlConeColStacked = $00000064; xlConeColStacked100 = $00000065; xlConeBarClustered = $00000066; xlConeBarStacked = $00000067; xlConeBarStacked100 = $00000068; xlConeCol = $00000069; xlPyramidColClustered = $0000006A; xlPyramidColStacked = $0000006B; xlPyramidColStacked100 = $0000006C; xlPyramidBarClustered = $0000006D; xlPyramidBarStacked = $0000006E; xlPyramidBarStacked100 = $0000006F; xlPyramidCol = $00000070; xl3DColumn = $FFFFEFFC; xlLine = $00000004; xl3DLine = $FFFFEFFB; xl3DPie = $FFFFEFFA; xlPie = $00000005; xlXYScatter = $FFFFEFB7; xl3DArea = $FFFFEFFE; xlArea = $00000001; xlDoughnut = $FFFFEFE8; xlRadar = $FFFFEFC9; } // O PrintPreview abre a tela de visualizao do Excel // e o PrintOut imprime na impressora padro do Windows //Sheet.PrintPreview; //Sheet.PrintOut; // o SaveAs permite que vc salve automticamente o relatrio gerado //Sheet.SaveAs('c:teste.xls'); end;