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;}
{
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;}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货