list_dao_chu_excel

#include<afxdb.h>

//--------设置默认导出名称------------"标题“+“日期”--------------------------------------------------------

 //获取对话框标题
 CString title;
 GetWindowText(title);
 //获取当前时间
 CString Date;
 CTime strCurrentTime;

 strCurrentTime=CTime::GetCurrentTime();
 Date=strCurrentTime.Format("%Y%m%d%H%M");

 CFileDialog dlg( FALSE,
     "xls",
     title+Date,
     OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
     "Excel 文件(*.xls)|*.xls||");

 dlg.m_ofn.lpstrTitle = "文件列表另存为";

 if (dlg.DoModal() != IDOK)
 return;
 CString strFilePath;
 //获得文件路径名
 strFilePath = dlg.GetPathName();
 //判断文件是否已经存在,存在则删除重建
 DWORD dwRe = GetFileAttributes(strFilePath);
 if ( dwRe != (DWORD)-1 )
 {
  DeleteFile(strFilePath);
 }

 CDatabase database;//数据库库需要包含头文件
 CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel驱动
 CString sSql,strInsert;
 TRY
   {
  // 创建进行存取的字符串
  sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, strFilePath, strFilePath);

  // 创建数据库 (既Excel表格文件)
  if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
  {
   //获得列别框总列数
   int iColumnNum,iRowCount;
   LVCOLUMN lvCol;

   CString strColName; //用于保存列标题名称
   int i,j; //列、行循环参数

   iColumnNum = m_listonetrbtf.GetHeaderCtrl()->GetItemCount();
   iRowCount = m_listonetrbtf.GetItemCount();

   sSql = " CREATE TABLE DSO_DX ( ";
   strInsert = " INSERT INTO DSO_DX ( " ;
   //获得列标题名称
   lvCol.mask = LVCF_TEXT; //必需设置,说明LVCOLUMN变量中pszText参数有效
   lvCol.cchTextMax = 32; //必设,pszText参数所指向的字符串的大小
   lvCol.pszText = strColName.GetBuffer(32); //必设,pszText 所指向的字符串的实际存储位置。
   //以上三个参数设置后才能通过 GetColumn()函数获得列标题的名称
   for( i=0 ; i< iColumnNum ; i++ )
   {
    if ( !(m_listonetrbtf.GetColumn(i,&lvCol)) )
     return;
    if ( i<iColumnNum-1 )
    {
     sSql = sSql + lvCol.pszText + " TEXT , ";
     strInsert = strInsert + lvCol.pszText + " , ";
    }
    else
    {
     sSql = sSql + lvCol.pszText + " TEXT ) ";
     strInsert = strInsert + lvCol.pszText + " )  VALUES ( ";
    }
   }
   //创建Excel表格文件
   database.ExecuteSQL(sSql);

   //循环提取记录并插入到EXCEL中
   sSql = strInsert;
   char chTemp[33];
   for ( j=0 ; j<iRowCount ; j++ )
   {
    memset(chTemp,0,33);
    for ( i=0 ; i<iColumnNum ; i++ )
    {
     m_listonetrbtf.GetItemText(j,i,chTemp,33);
     if ( i < (iColumnNum-1) )
     {
      sSql = sSql + "'" + chTemp + "' , ";
     }
     else
     {
      sSql = sSql + "'" + chTemp + "' ) ";
     }
    }
    //将记录插入到表格中
    database.ExecuteSQL(sSql);

    sSql = strInsert;
   }
  }     

  // 关闭Excel表格文件


  AfxMessageBox("保存Excel文件成功!");
 }
 CATCH_ALL(e)
 {
  //错误类型很多,根据需要进行报错。
  AfxMessageBox("Excel文件保存失败。");
 }

 database.Close();
 END_CATCH_ALL;
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值