1. 程式人生 > >利用vc實現資料表格匯出到CSV檔案

利用vc實現資料表格匯出到CSV檔案

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();//關閉檔案
}