int CUserDataTrans::TransUserToDbf(char *pSql,char *pDB,char *pFileName,BOOL FieldHead)
{
COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);    CDaoDatabase db;
    CDaoRecordset rs;
    long lNumCols;    db.Open(pDB, FALSE, FALSE);
    rs.m_pDatabase = &db;    
    rs.Open(AFX_DAO_USE_DEFAULT_TYPE, pSql, 0);    lNumCols = rs.GetFieldCount();    //Start a new workbook in Excel    _Application oApp;
    oApp.CreateDispatch("Excel.Application");
    if (!oApp)
    {
        AfxMessageBox("Can't start Excel");
        return 0;
    }
    Workbooks oBooks = oApp.GetWorkbooks();    _Workbook oBook = oBooks.Add(vOpt);
Worksheets oSheets = oBook.GetWorksheets();
    _Worksheet oSheet = oSheets.GetItem(COleVariant((short)1));
    Range oRange;    //Transfer the data in the recordset to the worksheet
    COleDispatchDriver rs2;
    rs2.AttachDispatch((LPDISPATCH) rs.m_pDAORecordset);
if (FieldHead)
{
oRange = oSheet.GetRange(COleVariant("A2"), vOpt);
oRange.CopyFromRecordset((LPUNKNOWN) rs2.m_lpDispatch,
                             vOpt, vOpt);
rs2.DetachDispatch();
rs2.ReleaseDispatch();
//Add the field names to row 1
    CDaoFieldInfo FieldInfo;
    for(long i=0; i<=lNumCols-1;i++)
{
    oRange = oSheet.GetRange(COleVariant("A1"), vOpt);
    oRange = oRange.GetOffset(vOpt, COleVariant(i));
    rs.GetFieldInfo(i, FieldInfo, AFX_DAO_PRIMARY_INFO);
    oRange.SetValue(COleVariant(FieldInfo.m_strName));
    }
}
else
{
oRange = oSheet.GetRange(COleVariant("A1"), vOpt);
oRange.CopyFromRecordset((LPUNKNOWN) rs2.m_lpDispatch,
                             vOpt, vOpt);
rs2.DetachDispatch();
rs2.ReleaseDispatch();
}
 
    //Format the worksheet
    oRange = oSheet.GetRange(COleVariant("A1"), vOpt);
    oRange = oRange.GetResize(COleVariant((short)1), 
                              COleVariant(lNumCols));
    Font oFont = oRange.GetFont();
    oFont.SetBold(COleVariant((short)TRUE));
    oRange = oRange.GetEntireColumn();
    oRange.AutoFit(); 
oBook.SaveAs(COleVariant(pFileName),
COleVariant((long)11), covOptional, covOptional, covOptional, covOptional,
1, covOptional, covOptional, covOptional, covOptional);

db.Close();
oBook.Close(COleVariant((short)false), covOptional, covOptional);
oApp.ReleaseDispatch();
oApp.Quit();
return 1;}