>Hi Ed!
>
>Report Ouput to Excel is possible... You have to create a pre-format template in excel...
>
Yes, I know that - It's much slower than DataToClip followed by opening a worksheet, positioning and pasting, by lots - the COM overhead for 45K x 6 is big.
>***** I want to share my previous program...
>***** This source code is extracted from my previous program..
>***** I usually include an excel report to my client
>DIMENSION arrField(1)
>tmpsheet = GETOBJECT('','excel.sheet')
>XLApp = tmpsheet.APPLICATION
>XLApp.VISIBLE = .T.
>XLApp.WorkBooks.Open(sys(5)+curdir()+"fieldcash.xls")
>cFile = "FCBR "+;
> CMONTH(CTOD("01/" + RIGHT(reconcil.monthyear,2) + "/"+LEFT(reconcil.monthyear,4) ))+" "+;
> LEFT( reconcil.monthyear,4)+".XLS"
>XLApp.ActiveWorkbook.SaveAs(cFile)
>XLSheet = XLApp.ActiveSheet
>i = 0
>i = i + 1
>XLSheet.Cells(i,1).VALUE = "INTERNATIONAL ORGANIZATION FOR MIGRATION (IOM)"
>i = i + 1
>XLSheet.Cells(i,1).VALUE = "Mobile Information Referral and Community Assistance Service (MIRCAS)"
>i = i + 1
>XLSheet.Cells(i,1).VALUE = SETUP.header1
>i = i + 1
>XLSheet.Cells(i,1).VALUE = SETUP.header2
>i = i + 1
>XLSheet.Cells(i,1).VALUE = SETUP.header3
>i = i + 1
>i = i + 1
>i = i + 1
>XLSheet.Cells(i,1).VALUE = "FIELD CASH/BANK REPORT"
>i = i + 1
>i = i + 1
>XLSheet.Cells(i,2).VALUE = ": "+LEFT( reconcil.monthyear,4)
>XLSheet.Cells(i,6).VALUE = ": "+SETUP.CURRENCY
>XLSheet.Cells(i,10).VALUE = ": "+SETUP.SETUP
>i = i + 1
>XLSheet.Cells(i,2).VALUE = ": "+CMONTH(CTOD("01/" + RIGHT(reconcil.monthyear,2) + "/"+LEFT(reconcil.monthyear,4) ))
>XLSheet.Cells(i,6).VALUE = ": "+SETUP.bank
>XLSheet.Cells(i,10).VALUE = ": "+SETUP.misscode
>i = i + 2
>i = i + 2
>XLSheet.Cells(i,1).VALUE = LEFT(reconcil.monthyear,4)
>XLSheet.Cells(i,11).VALUE = ALLT(STR(reconcil.begbalance,13,2))
>THISFORM.curmoyr = reconcil.monthyear
>THISFORM.CURDATE = CTOD("01/"+RIGHT(THISFORM.curmoyr,2)+"/"+LEFT(THISFORM.curmoyr,4))
>tempdate = THISFORM.CURDATE+31
>curdate2 = CTOD("01/"+STR(MONTH(tempdate),2,0)+"/"+STR(YEAR(tempdate),4,0))-1
>SELECT VOUCHER
>WAIT WINDOW "Please wait..." NOWAIT
>SELECT reconcil
>SET FILTER TO reconcil.monthyear=THISFORM.curmoyr
>GO TOP
>************
>SELECT VOUCHER2
>SET FILTER TO prv_date>=reconcil.BEGDATE .AND. prv_date <= reconcil.ENDDATE
>GO TOP
>SELECT VOUCHER
>SET SKIP TO
>SET FILTER TO prv_date>=reconcil.BEGDATE .AND. prv_date <= reconcil.ENDDATE
>GO TOP
>IF !EOF()
> REPLACE VOUCHER.fund_bal WITH (reconcil.begbalance-VOUCHER.AMOUNT)
> nAmount = VOUCHER.fund_bal
> SKIP 1
> DO WHILE !EOF()
> REPLACE VOUCHER.fund_bal WITH (nAmount-VOUCHER.AMOUNT)
> nAmount = VOUCHER.fund_bal
> SKIP 1
> ENDDO
> GO TOP
> SELECT VOUCHER
> SET SKIP TO VOUCHER2
> GO TOP
> WAIT WINDOW "Done ... " NOWAIT
> THISFORM.HIDE
>ENDIF
>IF EOF()
> =MESSAGEBOX("No available record for this period!", 48, nACCIOMver)
>ELSE
> SELECT VOUCHER
> GO TOP
> cur_code = ""
> isfirst = .T.
> nAmt_Debit = 0
> nAmt_Credit = 0
> nPay_Debit = 0
> nPay_Credit = 0
> nReceipt = 0
>
> ntAmt_Debit = 0
> ntAmt_Credit = 0
> ntPay_Debit = 0
> ntPay_Credit = 0
> ntReceipt = 0
> WAIT WINDOW "Starting Excel..." NOWAIT
> GO TOP
> i = i + 1
> SCAN
> IF cur_code<>VOUCHER.prv_no
> i = i + 1
> cCell = "A"+ALLT(STR(i))
> XLApp.Range(cCell).Select
> XLApp.Selection.EntireRow.Insert
>*********************************
> XLSheet.Cells(i,1).VALUE = PADL(ALLT(STR(DAY(VOUCHER.prv_date),2,0)),2,"0")+"-"+SUBSTR(CMONTH(VOUCHER.prv_date),1,3)
> XLSheet.Cells(i,2).VALUE = PROPER(MLINE(VOUCHER.PAIDTO_RECFR,1))
> XLSheet.Cells(i,3).VALUE = PROPER(MLINE(VOUCHER.PARTICULARS,1))
> XLSheet.Cells(i,4).VALUE = VOUCHER.prv_no
> XLSheet.Cells(i,5).VALUE = VOUCHER.CHECK_NO
> nAmt_Debit = IIF(VOUCHER.AMOUNT<0, -1*VOUCHER.AMOUNT, 0)
> nAmt_Credit = IIF(VOUCHER.AMOUNT>0, VOUCHER.AMOUNT, 0)
>
> ntAmt_Debit = ntAmt_Debit + nAmt_Debit
> ntAmt_Credit = ntAmt_Credit + nAmt_Credit
> XLSheet.Cells(i,6).VALUE = IIF(VOUCHER.AMOUNT<0, -1*VOUCHER.AMOUNT, "")
> XLSheet.Cells(i,7).VALUE = IIF(VOUCHER.AMOUNT>0, VOUCHER.AMOUNT, "")
> XLSheet.Cells(i,11).VALUE = IIF(VOUCHER.fund_bal<>0,VOUCHER.fund_bal,"")
> nFund_balance = VOUCHER.fund_bal
> ENDIF
> i = i + 1
> cCell = "A"+ALLT(STR(i))
> XLApp.Range(cCell).Select
> XLApp.Selection.EntireRow.Insert
> nPay_Debit = IIF(VOUCHER2.AMT_DEBIT<>0,STR(VOUCHER2.AMT_DEBIT,13,2),"")
> nPay_Credit = IIF(VOUCHER2.amt_credit<>0,IIF(VOUCHER2.acct_code<>"1-553",STR(VOUCHER2.amt_credit,13,2),""),"")
> nReceipt = IIF(VOUCHER2.amt_credit<>0,IIF(VOUCHER2.acct_code="1-553",STR(VOUCHER2.amt_credit,13,2),""),"")
>
> ntPay_Debit = ntPay_Debit + VAL(nPay_Debit)
> ntPay_Credit = ntPay_Credit + VAL(nPay_Credit)
> ntReceipt = ntReceipt + VAL(nReceipt)
>
> XLSheet.Cells(i,8).VALUE = IIF(VOUCHER2.AMT_DEBIT<>0,VOUCHER2.AMT_DEBIT,"")
> XLSheet.Cells(i,9).VALUE = IIF(VOUCHER2.amt_credit<>0,IIF(VOUCHER2.acct_code<>"1-553",STR(VOUCHER2.amt_credit,13,2),""),"")
> XLSheet.Cells(i,10).VALUE = IIF(VOUCHER2.amt_credit<>0,IIF(VOUCHER2.acct_code="1-553",VOUCHER2.amt_credit,""),"")
> XLSheet.Cells(i,12).VALUE = VOUCHER2.acct_code
> XLSheet.Cells(i,13).VALUE = IIF(VOUCHER2.budget_line<>0,ALLT(STR(VOUCHER2.budget_line,5,2)),"")
> XLSheet.Cells(i,14).VALUE = PROPER(VOUCHER2.INV_REF_NO)
> cur_code = VOUCHER.prv_no
> SELECT VOUCHER
> ENDSCAN
> XLSheet.Cells(i+2,11).VALUE = nFund_balance
> i = i + 4
> WAIT WINDOW "Trend Data Retrieved" TIMEOUT 2
> SET DEFA TO (SYS(2003))
>ENDIF
>SELECT reconcil
>SET FILTER TO
>SELECT VOUCHER2
>SET FILTER TO
>SELECT VOUCHER
>SET FILTER TO
>CLOSE TABLES
>THISFORM.RELEASE