把数据按照一定格式写到EXCEL里~~~

解决方案 »

  1.   

    #include <afxdb.h> 
    #include <odbcinst.h>void CTjsl::OnExcel()
    {

      CDatabase database;
      CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动
      CString sExcelFile;                // 要建立的Excel文件
      CString sSql; CFileDialog Dlg(FALSE, "*.xls | *.xls", m_strBjmc, OFN_HIDEREADONLY, "Excel 文件 (.xls)|*.xls||");
    int nRet = Dlg.DoModal();
    if ( nRet== IDOK ) {
    sExcelFile=Dlg.GetPathName(); TRY
    {
    // 创建进行存取的字符串
    sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",
    sDriver, sExcelFile, sExcelFile); // 创建数据库 (既Excel表格文件)
    if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
    {
      // 创建表结构
      sSql=_T("CREATE TABLE 部件汇总 (");
      for(int i=0;i<m_Grid.GetColumnCount();i++)
      {
      sSql+=m_Grid.GetItemText(0,i);
      sSql+=_T(" TEXT,");
      }
      sSql=sSql.Left(sSql.GetLength()-1);
      sSql+=_T(")");
      sSql.Replace(_T("/"),_T("和"));
      database.ExecuteSQL(sSql);   // 插入数值
      for(int j=1;j<m_Grid.GetRowCount();j++)
      {
    sSql=_T("INSERT INTO 部件汇总 VALUES (");
    for(i=0;i<m_Grid.GetColumnCount();i++)
    {
    sSql+=_T("'");
    sSql+=m_Grid.GetItemText(j,i);
    sSql+=_T("',");
    }
    sSql=sSql.Left(sSql.GetLength()-1);
    sSql+=_T(")");
    database.ExecuteSQL(sSql);
      }
    } // 关闭数据库
    database.Close();
    }
    CATCH_ALL(e)
    {
    AfxMessageBox(_T("Excel驱动没有安装!"));
    }
    END_CATCH_ALL;
    }
    }
      

  2.   

    谢谢两位了,但是SEETHE(),我的数据是按照一定结构存在文件或是内存中,我并不想通过ODBC或数据库来写EXCEL文件~请再给点提示~谢谢~