HELP WITH EXCEL

jtormtz

New Member
Hi. Dudes i have a critical problem cause in my job i have to send reports to excel, this is simple "?" they said but i don´t know how a friend told me "use rundll" but a dont know plz somebdy help, i will lose my job i have 1 week researching and nothing yet.


Please tell me how to begin or where i can find the easiest way to send reports to excel
 

mpowell

Member
Buy me a pint cos im gonna save u ur job

OK
these are the basic commands to build an excel document on the fly. You should be able to adapt this to meet your needs.

First define these

DEF VAR chExcelApplication AS COM-HANDLE.
DEF VAR chWorkbook AS COM-HANDLE.
DEF VAR chWorkSheet AS COM-HANDLE.
DEF VAR v-col-num AS I.
Then comes the initialisation

CREATE "Excel.Application" chExcelApplication.
chExcelApplication:Visible = FALSE.
chWorkbook = chExcelApplication:Workbooks:Add().
chWorkSheet = chExcelApplication:Sheets:Item(1).



chWorksheet:Range('A' + STRING(v-col-num)):VALUE = 'Col Title' .
chWorksheet:Range('B' + STRING(v-col-num)):VALUE = 'Col Title' .

Then main block
code.....

Then output your data
chWorksheet:Range('B' + STRING(v-col-num)):VALUE = STRING(var).

Then tidy
chExcelApplication:Selection:Style = 'NORMAL' .
chExcelApplication:VISIBLE = TRUE.
chWorksheet:Columns('A:E'):EntireColumn:Autofit() .
chWorkSheet:Range('A1:E1'):FONT:BOLD = TRUE.

RELEASE OBJECT chExcelApplication.
RELEASE OBJECT chWorkbook.
RELEASE OBJECT chWorkSheet.

They are straight forward and pretty self-explanatory commands.
Hope this helps, if you get stuck you know where we are.
Regards
 

Chris Kelleher

Administrator
Staff member
Here's some sample code that you can find in DLC/src/samples/activex/excelgraphs/oleauto.p

Code:
/* 
 * This sample extracts data from a Progress database
 * and graphs the information using the Automation Objects
 * from the Excel server in Office 95/97.
 * You must connect to a sports database before running this.
 * This sample program leaves Excel open.  You should close it manually
 * when the program completes.
 */

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 iCount                  AS INTEGER.
DEFINE VARIABLE iIndex                  AS INTEGER.
DEFINE VARIABLE iTotalNumberOfOrders    AS INTEGER.
DEFINE VARIABLE iMonth                  AS INTEGER.
DEFINE VARIABLE dAnnualQuota            AS DECIMAL.
DEFINE VARIABLE dTotalSalesAmount       AS DECIMAL.
DEFINE VARIABLE iColumn                 AS INTEGER INITIAL 1.
DEFINE VARIABLE cColumn                 AS CHARACTER.
DEFINE VARIABLE cRange                  AS CHARACTER.

/* create a new Excel Application object */
CREATE "Excel.Application" chExcelApplication.

/* launch Excel so it is visible to the user */
chExcelApplication:Visible = TRUE.

/* create a new Workbook */
chWorkbook = chExcelApplication:Workbooks:Add().

/* get the active Worksheet */
chWorkSheet = chExcelApplication:Sheets:Item(1).

/* set the column names for the Worksheet */
chWorkSheet:Columns("A"):ColumnWidth = 18.
chWorkSheet:Columns("B"):ColumnWidth = 12.
chWorkSheet:Columns("C"):ColumnWidth = 12.
chWorkSheet:Range("A1:C1"):Font:Bold = TRUE.
chWorkSheet:Range("A1"):Value = "SalesRep".
chWorkSheet:Range("B1"):Value = "Total Sales".
chWorkSheet:Range("C1"):Value = "Annual Quota".

/* Iterate through the salesrep table and populate
   the Worksheet appropriately */
FOR EACH salesrep:
    dAnnualQuota = 0.
    iTotalNumberOfOrders = 0.
    dTotalSalesAmount = 0.
    iColumn = iColumn + 1.
    FOR EACH order OF salesrep:
        iTotalNumberOfOrders = iTotalNumberOfOrders + 1.
        FIND invoice WHERE invoice.order-num = Order.order-num NO-ERROR.
        IF AVAILABLE invoice THEN 
            dTotalSalesAmount = dTotalSalesAmount + invoice.amount.
    END.
    
    DO iMonth = 1 TO 12:
        dAnnualQuota = dAnnualQuota + salesrep.month-quota[iMonth].
    END.
    
    cColumn = STRING(iColumn).
    cRange = "A" + cColumn.
    chWorkSheet:Range(cRange):Value = salesrep.rep-name.
    cRange = "B" + cColumn.
    chWorkSheet:Range(cRange):Value = dTotalSalesAmount.
    cRange = "C" + cColumn.
    chWorkSheet:Range(cRange):Value = dAnnualQuota.
END.

chWorkSheet:Range("B2:C10"):Select().
chExcelApplication:Selection:Style = "Currency".

/* create embedded chart using the data in the Worksheet */
chWorksheetRange = chWorksheet:Range("A1:C10").
chWorksheet:ChartObjects:Add(10,150,425,300):Activate.
chExcelApplication:ActiveChart:ChartWizard(chWorksheetRange, 3, 1, 2, 1, 1, TRUE,
    "1996 Sales Figures", "Sales Person", "Annual Sales").

/* create chart using the data in the Worksheet */
chChart=chExcelApplication:Charts:Add().
chChart:Name = "Test Chart".
chChart:Type = 11.

/* release com-handles */
RELEASE OBJECT chExcelApplication.      
RELEASE OBJECT chWorkbook.
RELEASE OBJECT chWorksheet.
RELEASE OBJECT chChart.
RELEASE OBJECT chWorksheetRange.

HTH.

-Chris
 
Top