void Csmyc::OnClickedButtonBc()
{
// TODO: 在此添加控制元件通知處理程式代碼
WORD sYear, sMonth, sDay, sHour, sMinute, sSecond;
SYSTEMTIME CurTime;/////定義SYSTEMTIME類的物件
GetLocalTime(&CurTime);////獲取本地時間
sYear = CurTime.wYear;////獲得年
sMonth=CurTime.wMonth;//獲得月
sDay = CurTime.wDay;
sHour = CurTime.wHour;
sMinute = CurTime.wMinute;
sSecond=CurTime.wSecond;
CString sFileName;
sFileName.Format(_T("%d年%d月%d日%d點%d分%d秒.xls"),
sYear, sMonth, sDay, sHour, sMinute, sSecond);
CFileDialog dlg(FALSE, ".xls", sFileName,OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY,"(*.xls)|*.xls||", this);
dlg.m_ofn.lpstrTitle = _T("保存檔案");
if (dlg.DoModal() == IDOK)
{
// 實作存盤
CString buff0[1024], buff1[1024];
CString fileName = dlg.GetPathName();
CFile file(fileName,CFile::modeCreate | CFile::modeReadWrite | CFile::shareExclusive);
file.Write("失效模式\t 預測結果\n", 35);
int i = 0;
int j = 0;
j = m_ycjg_list.GetItemCount();
if (j > 0)
{
for (i = 0; i<j; i++)
{
buff0[i] = m_ycjg_list.GetItemText(i, 0);
buff1[i] = m_ycjg_list.GetItemText(i, 1);
CString msg;
msg.Format(_T("%s\t%s\n"), buff0[i], buff1[i]);
file.Write(msg, msg.GetLength());
}
}
file.Close();
}
return;
}
串列資料是這樣的:

輸出到excel是這樣的:

——————更新————————
好吧,我現在解決這個問題了,現在還剩下最后一個問題,匯出的xls檔案打開的總是提示檔案格式和擴展名不符,但是打開后顯示是正常的,有沒有辦法把打開時的那個警告去掉?

只在第一次打開時提示,以后打開就沒有了
uj5u.com熱心網友回復:
百度搜相關關鍵字。uj5u.com熱心網友回復:
那是因為你直接用CFile寫的檔案,其實就是一個txt檔案,壓根就不是Excel的檔案格式但是擴展名卻是.xls所以你這個就相當于用Excel打開了一個txt,而Excel的單元格恰好又是用\t分隔的,所以強行打開后顯示也是正常的
uj5u.com熱心網友回復:
http://blog.sina.com.cn/s/blog_6c3d32da0100u9ep.htmluj5u.com熱心網友回復:
檔案擴展名修改為 .CSVuj5u.com熱心網友回復:
可以新建一個Excel檔案,然后將資料寫入~ 應該就沒問題了
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/69984.html
標籤:基礎類
上一篇:新手求教串口通信DLL問題
