利用vc實現資料表格匯出到CSV檔案
阿新 • • 發佈:2019-02-09
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();//關閉檔案
}