vc6.0生成excel

来源:互联网 发布:重力约束核聚变吗 知乎 编辑:程序博客网 时间:2024/06/07 21:27

 上文介绍了读取Excel文件中数据的方法,这回说明生成一个Excel文件的方法。
 
初始化Com库和使用的对象都和上文一样,下面这段代码的逻辑是:
1.       先打开一个Excel文件,
2.       在激活的Sheet的下一个sheet中写入数据
3.       保存成另外一个文件
 
       if (!m_oExcelApp.CreateDispatch( _T( "Excel.Application" ), NULL ) )
       {
              ::MessageBox( NULL, _T( "创建Excel服务失败!" ), _T( "错误提示!" ), MB_OK | MB_ICONERROR);
              exit(1);
       }
      
       //设置为显示
       m_oExcelApp.SetVisible(FALSE);
       m_oWorkBooks.AttachDispatch( m_oExcelApp.GetWorkbooks(), TRUE );
      
       LPDISPATCH lpDisp = NULL;
       COleVariant covTrue((short)TRUE);
    COleVariant covFalse((short)FALSE);
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
       Range            oCurCell;
 
       // 打开文件
       lpDisp = m_oWorkBooks.Open( _T( "K://VoiceS_Excel//09_Backup//02_Test//SourceFile.xls" ),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                     _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing),
                                      _variant_t(vtMissing) );
       // 获得活动的WorkBook( 工作簿 )
       m_oWorkBook.AttachDispatch( lpDisp, TRUE );
       // 获得活动的WorkSheet( 工作表 )
       m_oWorkSheet.AttachDispatch( m_oWorkBook.GetActiveSheet(), TRUE );
       m_oWorkSheet.AttachDispatch( m_oWorkSheet.GetNext() );
       m_oWorkSheet.Activate();
       // 获得使用的区域Range( 区域 )
       m_oCurrRange.AttachDispatch( m_oWorkSheet.GetCells(), TRUE );
 
       // 写入数据
       int nRowNum = 0;
       m_pExcelOperDlg->getRowNumInListCtrl( nRowNum );
       CStringArray* arrayStr;
       arrayStr = new CStringArray[nRowNum];
       m_pExcelOperDlg->getAllDataInListCtrl( arrayStr ); // 获得ListCtrl中的所有数据,保存到二维数组中
       for ( int i = 0; i < nRowNum; i++ )             // 向Excel中写数据
       {
              for ( int j = 0; j < arrayStr[i].GetSize(); j++ )
              {
                     m_oCurrRange.SetItem( _variant_t( (long)(i+1) ),
                                                         _variant_t( (long)(j+1) ),
                                                         COleVariant( arrayStr[i].GetAt( j ) ) );
              }
       }
 
       m_oWorkBook.SaveAs( COleVariant( strFilePath ),
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing),
                                          0,
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing),
                                          _variant_t(vtMissing) );
 
       // 释放二维数组
       delete[] arrayStr;
 
       // 关闭
       m_oWorkBook.Close( covOptional, COleVariant( strFilePath ), covOptional );
       m_oWorkBooks.Close();
       // 释放
       m_oCurrRange.ReleaseDispatch();
       m_oWorkSheet.ReleaseDispatch();
       m_oWorkSheets.ReleaseDispatch();
       m_oWorkBook.ReleaseDispatch();
       m_oWorkBooks.ReleaseDispatch();
       m_oExcelApp.ReleaseDispatch();
       m_oExcelApp.Quit();


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/primer_programer/archive/2008/05/09/2422362.aspx

原创粉丝点击