Geração Gráfico Excel

Discussão em 'Progress 4GL' iniciado por willians.ambrosio, Março 8, 2010.

  1. willians.ambrosio

    willians.ambrosio Sem Pontuação

    Boa Tarde

    Alguém teria um programa de exemplo que gera somente um Gráfico (Colunas) no excel?

    Grato

    Willians Ambrósio
  2. jonas

    jonas Membro Participativo

    Seguem alguns códigos, veja se te ajuda:
    Código:
    Para aparecer um título específico na barra de títulos em vez de Pasta1 ou Pasta2
    ch-Excel:Sheets:item(1l):name = "Titulo da Pasta1".
    
    
    GRÁFICO NO EXCEL
    
    Numeração dos gráficos.... 
    
    1 Area Empilhada 2D 
    2 Barras Agrupadas 2D 
    3 Colunas Agrupadas 2D 
    4 Linha com marcadores 
    5 Pizza 2D 
    6 Rosca 
    7 Radar com Marcadores 
    8 Dispersão com pontos conectados 
    9 Area 3D 
    10 Barras Agrupadas 3D 
    11 Colunas 3D 
    12 Linhas 3D 
    13 Piza 3D 
    14 Superficie 3D
    
    DEFINE VARIABLE chExcelApplication AS COM-HANDLE. 
    DEFINE VARIABLE chWorkbook AS COM-HANDLE. 
    DEFINE VARIABLE chWorksheet AS COM-HANDLE. 
    DEFINE VARIABLE chChart AS COM-HANDLE. 
    DEFINE VARIABLE chWorksheetRange AS COM-HANDLE. 
    DEFINE VARIABLE iColumn AS INTEGER INITIAL 1. 
    DEFINE VARIABLE cColumn AS CHARACTER. 
    DEFINE VARIABLE cRange AS CHARACTER. 
    
    /* Cria a Nova Aplicacao Excel object */ 
    CREATE "Excel.Application" chExcelApplication. 
    
    /* Abri o Excel Visualizando os Dados */ 
    chExcelApplication:Visible = TRUE. 
    /* Cria o arquivo */ 
    
    chWorkbook = chExcelApplication:Workbooks:Add(). 
    
    /* Ativa o Arquivo */ 
    chWorkSheet = chExcelApplication:Sheets:Item(1). 
    
    /* Label das Colunas a ser preenchida pelo arquivo */ 
    chWorkSheet:Columns("A"):ColumnWidth = 10. 
    chWorkSheet:Columns("B"):ColumnWidth = 10. 
    chWorkSheet:Columns("C"):ColumnWidth = 12. 
    chWorkSheet:Range("A1:C1"):Font:Bold = TRUE. 
    chWorkSheet:Range("A1"):Value = "DATA". 
    chWorkSheet:Range("B1"):Value = "VALOR FAT.". 
    chWorkSheet:Range("C1"):Value = "VALOR PED". 
    
    /* Dados do Arquivo */ 
    DEFINE TEMP-TABLE work 
    FIELD w-data AS DATE 
    FIELD w-val AS DEC FORMAT ">>>,>>>,>>9.99" 
    FIELD w-valp AS DEC FORMAT ">>>,>>>,>>9.99". 
    
    DEFINE VARIABLE n AS INTEGER. 
    FOR EACH nota-fiscal WHERE 
    nota-fiscal.dt-emis-nota >= 04/01/2006 AND 
    nota-fiscal.dt-emis-nota <= 04/10/2006 AND 
    nota-fiscal.dt-cancela = ? AND 
    nota-fiscal.emite-duplic = YES. 
    FIND FIRST WORK WHERE WORK.W-data = nota-fiscal.dt-emis-nota NO-ERROR. 
    IF NOT AVAIL WORK THEN 
    DO: 
    CREATE work. 
    ASSIGN work.w-data = nota-fiscal.dt-emis-nota 
    work.w-val = nota-fiscal.vl-tot-nota. 
    END. 
    ELSE DO: 
    ASSIGN work.w-val = nota-fiscal.vl-tot-nota + work.w-val. 
    END. 
    END. 
    FOR EACH ped-venda WHERE 
    ped-venda.dt-entrega >= 04/01/2006 AND 
    ped-venda.dt-entrega <= 04/10/2006 AND 
    ped-venda.cod-sit-ped <> 9 NO-LOCK. 
    
    FOR EACH ped-item OF ped-venda no-lock: 
    FIND FIRST WORK WHERE WORK.W-data = ped-item.dt-entrega NO-ERROR. 
    IF NOT AVAIL WORK THEN 
    DO: 
    CREATE work. 
    ASSIGN work.w-data = ped-item.dt-entrega 
    work.w-valp = ped-item.vl-tot-it. 
    END. 
    ELSE DO: 
    ASSIGN work.w-valp = ped-item.vl-tot-it + work.w-val. 
    END. 
    END. 
    END. 
      
    FOR EACH work. 
    iColumn = iColumn + 1. 
    cColumn = STRING(iColumn). 
    cRange = "A" + cColumn. 
    chWorkSheet:Range(cRange):Value = work.w-data. 
    cRange = "B" + cColumn. 
    chWorkSheet:Range(cRange):Value = work.w-val. 
    cRange = "C" + cColumn. 
    chWorkSheet:Range(cRange):Value = work.w-valP. 
    
    END. 
    
    chWorkSheet:Range("B2:C10"):Select(). 
    /*chExcelApplication:Selection:Style = "Currency". */ 
    
    /* Cria os labels *e abre a tabela */ 
    chWorksheetRange = chWorksheet:Range("A1:C31"). 
    chWorksheet:ChartObjects:Add(50,150,400,300):Activate. 
    chExcelApplication:ActiveChart:ChartWizard(chWorksheetRange, 3, 1, 2, 1, 1, TRUE, 
    " ", "DATAS DE FATURAMENTO", "VALOR"). 
    
    /* Cabeçalho */ 
    chChart=chExcelApplication:Charts:Add(). 
    chChart:Name = "ABA A". 
    chChart:Type = 11.  /* Aqui muda o tipo do grafico */ 
    
    /* Apaga da memoria  */ 
    RELEASE OBJECT chExcelApplication. 
    RELEASE OBJECT chWorkbook. 
    RELEASE OBJECT chWorksheet. 
    RELEASE OBJECT chChart. 
    RELEASE OBJECT chWorksheetRange.
    
    
    Mostrar valores de gráficos no excel
    
    
    
    &SCOPED-DEFINE xlPie 5 
    &SCOPED-DEFINE xlLocationAsNewSheet 2 
    
    /* COM Handle Definitions */ 
    define variable ExcelApplication    as com-handle. 
    define variable ExcelWorkBook       as com-handle. 
    define variable ExcelWorkSheet      as com-handle. 
    define variable ExcelChart          as com-handle. 
    define variable ExcelWorkSheetRange as com-handle. 
    
    define variable VinExcelRow as integer no-undo. 
    
    CREATE "Excel.Application" ExcelApplication. 
    
    ExcelApplication:Visible = true. 
    
    ExcelWorkBook = ExcelApplication:WorkBooks:Add(). 
    ExcelWorkSheet = ExcelApplication:Sheets:Item(1). 
    
    ExcelWorkSheet:Columns("A"):ColumnWidth = 7. 
    ExcelWorkSheet:Columns("B"):ColumnWidth = 14. 
    ExcelWorkSheet:Columns("C"):ColumnWidth = 25. 
    ExcelWorkSheet:Columns("D"):ColumnWidth = 10. 
    
    ExcelWorkSheet:Range("A1"):Value = "REASON ID#". 
    ExcelWorkSheet:Range("B1"):Value = "CATEGORY". 
    ExcelWorkSheet:Range("C1"):Value = "DESCRIPTION". 
    ExcelWorkSheet:Range("D1"):Value = "TOTALS". 
    
    do VinExcelRow = 2 to 20: 
      ExcelWorkSheet:Range("A" + String(VinExcelRow)):Value = VinExcelRow. 
      ExcelWorkSheet:Range("B" + String(VinExcelRow)):Value = (VinExcelRow * 2). 
    end. 
    
    /* Creating embedded chart */ 
    ExcelWorkSheet:range("B2:" + "B" + String(VinExcelRow)):select. 
    ExcelChart = ExcelApplication:Charts:Add(). 
    ExcelChart:Activate(). 
    ExcelChart:name = "Teste". 
    ExcelChart:Type = {&xlPie}. 
    
    /* Setting the source of date to make chart with */ 
    ExcelChart:SetSourceData(ExcelWorkSheet:Range("B2:" + "B" + String(VinExcelRow))). 
    
    /*************************************************** **********/ 
    ExcelWorkSheet = ExcelApplication:Sheets:Item(2). 
    ExcelWorkSheet:visible = false. 
    ExcelWorkSheet = ExcelApplication:Sheets:Item(3). 
    ExcelWorkSheet:visible = false. 
    ExcelWorkSheet = ExcelApplication:Sheets:Item(4). 
    ExcelWorkSheet:visible = false. 
    /************************************************************ */ 
        
    /******** P R O T E G E N D O    A S    P A S T A S **********/ 
    ExcelWorkBook:Protect("senha":U, true, true). 
    /************************************************************ */ 
    
    ExcelApplication:DisplayAlerts = false. 
    ExcelWorkBook:SaveAs("c:\work\progress\rotinas\excel-graph.xls",{&xlWorkbookNormal},"","",NO,NO,{&xlShared},{&xlUs erResolution}). 
    
    /* Release COM HANDLES */ 
    release object ExcelApplication    no-error. 
    release object ExcelWorkBook       no-error. 
    release object ExcelWorkSheet      no-error. 
    release object ExcelChart          no-error. 
    release object ExcelWorkSheetRange no-error. 
    
    
    
  3. willians.ambrosio

    willians.ambrosio Sem Pontuação

    Deu certo sim Jonas

    Obrigado

Compartilhe esta Página