MFC从数据库里导出excel文档

[cpp]  view plain copy
  1. void CPctoolDlg::OnUserExcell()   
  2. {  
  3.     if(!m_ExlApp.CreateDispatch("Excel.Application",NULL))   
  4.     {   
  5.         AfxMessageBox("创建Excel服务失败!");   
  6.         return;   
  7.     }   
  8.     //m_ExlApp.SetVisible(TRUE);  
  9.     CString TempPath="XXX.xls";   
  10.     m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks(),TRUE);   
  11.     m_ExlBook.AttachDispatch(m_ExlBooks.Add((_variant_t)TempPath),TRUE);//加载EXCEL模板   
  12.     m_ExlSheets.AttachDispatch(m_ExlBook.GetSheets(),TRUE);//加载Sheet页面   
  13.   
  14.     //添加新的Sheet页面   
  15.     //m_ExlSheets.Add(vtMissing,vtMissing,_variant_t((long)1),vtMissing);     
  16.     //删除第二个Sheet页面   
  17.     //m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)2)),TRUE);   
  18.     //m_ExlSheet.Delete();    
  19.     //把第一个Sheet页面的名字改变为TestSheet   
  20.     m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)1)),TRUE);   
  21.     //m_ExlSheet.SetName("TestSheet");  
  22.   
  23.     m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);//加载所有单元格   
  24.     m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("Bracode"));   
  25.     m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)2),_variant_t("SN"));   
  26.     m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)3),_variant_t("MAC"));   
  27.     m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)4),_variant_t("TN"));   
  28.     m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)5),_variant_t("Result"));   
  29.     m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)6),_variant_t("Time"));   
  30.   
  31.     pDataBase->Executesql("select * from MB328");  
  32.     int i = 2;  
  33.     while(!pDataBase->pRst->rsEOF)  
  34.     {  
  35.         m_ExlRge.SetItem(_variant_t((long)i),_variant_t((long)1),(_variant_t)pDataBase->pRst->GetCollect("Barcode"));  
  36.         m_ExlRge.SetItem(_variant_t((long)i),_variant_t((long)2),(_variant_t)pDataBase->pRst->GetCollect("SN"));  
  37.         m_ExlRge.SetItem(_variant_t((long)i),_variant_t((long)3),(_variant_t)pDataBase->pRst->GetCollect("MAC"));  
  38.         m_ExlRge.SetItem(_variant_t((long)i),_variant_t((long)4),(_variant_t)pDataBase->pRst->GetCollect("TN"));  
  39.         m_ExlRge.SetItem(_variant_t((long)i),_variant_t((long)5),(_variant_t)pDataBase->pRst->GetCollect("Result"));  
  40.         m_ExlRge.SetItem(_variant_t((long)i),_variant_t((long)6),(_variant_t)pDataBase->pRst->GetCollect("Time"));  
  41.         pDataBase->pRst->MoveNext();  
  42.         i++;  
  43.     }  
  44.       
  45.   
  46.     //m_ExlBook.SetSaved(true);  
  47.     m_ExlApp.SetVisible(TRUE);  
  48.     m_ExlRge.ReleaseDispatch();   
  49.     m_ExlSheet.ReleaseDispatch();   
  50.     m_ExlSheets.ReleaseDispatch();   
  51.     m_ExlBook.ReleaseDispatch();   
  52.     m_ExlBooks.ReleaseDispatch();   
  53.     m_ExlApp.ReleaseDispatch();   
  54.     m_ExlApp.Quit();  
  55. }     

以上是主要的代码,前期准备工作是:

1.首先你需要有一个数据库相关的类DataBase,这里pDataBase就是指向这个类对象,里面封装了一系列关于数据库的操作。

2.利用MFC的类向导添加excell相关的6个类,这时excel.cpp和execel.h会自动添加到工程目录里,然后在在头文件处添加一下代码

[cpp]  view plain copy
  1. #include "excel.h  
  2. #include "comdef.h  
  3.   
  4. Range        m_ExlRge;   
  5. _Worksheet   m_ExlSheet;   
  6. Worksheets   m_ExlSheets;   
  7. _Workbook    m_ExlBook;   
  8. Workbooks    m_ExlBooks;   
  9. _Application m_ExlApp;  

你可能感兴趣的:(VC/MFC)