利用vc实现数据表格导出到CSV文件

来源:互联网 发布:spu sku 数据库设计 编辑:程序博客网 时间:2024/06/05 11:59

CSV文件为文本文件,利用逗号(,)分隔,操作与txt文件原理一样。可以利用EXCEL软件打开;

采用MFC中提供的对文件操作的类:CFile类的派生类CStdioFile中的WriteString()函数写一行数据,最简单;

 CFile类是微软基础文件类的基类,直接提供了无缓存的二进制磁盘输入输出服务,通过其派生类而间接地支持文本文件和内存文件,操作实例如下:

/*写入文件 *创建仅支持写入方式的文件1.txt*/

CStdioFile file("1.txt",CFile::modeCreate|CFile::modeWrite);
file.WriteString("testing");//写一行数据

file.Close();//关闭文件


相关代码如下:

//Recordset数据导入CSV文件, sFileName-文件名 num(行数) 

void CScaleDlg::RecordsetToCSV(CString sWorkName, long num)
{//采用MFC中提供的对文件操作的类-CStdioFile类
    CStdioFile  m_File;
    if(!m_File.Open(sWorkName, CFile::modeCreate|CFile::modeWrite))  
    {
         this->MessageBox("Opening CSV is failed!");
        return;
    }
   CString strLine;
   strLine="NO,Date,Time,CN,SN,Weigh,Total,Unit,Company\r\n";
    //写第一行到CSV
    m_File.WriteString(strLine);
   int j=0;
   CString strItem;
   CString strNum;
   CString cc;
   double dAccu=0;//浮点型
   double k=0;   
   CString sAccu;
   _variant_t var;
   m_Recordset->MoveFirst();//移到m_Recordset第一行记录位置
   while(!m_Recordset->adoEOF)  //遍历数据集
   {    
       strNum.Format("%d",j+1);//序号
       strItem=strNum;
       strItem+=",";
       var=m_Recordset->GetCollect("WeighDate");//Date
       cc=(LPCTSTR)_bstr_t(var);       
       strItem+=cc;
       strItem+=",";
       var=m_Recordset->GetCollect("WeighTime");//Time
      cc=(LPCTSTR)_bstr_t(var);
      strItem+=cc;
      strItem+=",";     
       //CN
       var=m_Recordset->GetCollect("CN");
       cc=(LPCTSTR)_bstr_t(var);       
       strItem+=cc;
       strItem+=",";
       //SN
       var=m_Recordset->GetCollect("SN");
       cc=(LPCTSTR)_bstr_t(var);       
       strItem+=cc;
       strItem+=",";
       //Weigh
       var=m_Recordset->GetCollect("Weigh");
       cc=(LPCTSTR)_bstr_t(var);      
       strItem+=cc;
      strItem+=",";
      //重量累计
        k=strtod(cc,NULL);
        dAccu+=k;
        sAccu.Format("%.2f",dAccu);
        strItem+=sAccu;
        strItem+=",";
       //Unit
       var=m_Recordset->GetCollect("Unit");
       cc=(LPCTSTR)_bstr_t(var);
       strItem+=cc;
       strItem+=","; 
       //Company
        var=m_Recordset->GetCollect("Company");
        cc=(LPCTSTR)_bstr_t(var);
        strItem+=cc;
        strItem+="\r\n";
        //写一行到CSV
       m_File.WriteString(strItem);
       j++;
      m_Recordset->MoveNext();
  }

    m_File.Close();//关闭文件
}
0 0