void CSearchLaserDlg::OnBnClickedSaveAs()
{
// TODO: 在此添加控件通知处理程序代码
CStringArray buffer; //字符串数组
CHeaderCtrl* pHeaderCtrl = m_uiDatalist.GetHeaderCtrl();
int colCount = 0; //colCount是列数,colCount从0开始
if (pHeaderCtrl)
{
colCount = pHeaderCtrl->GetItemCount(); //获取list的列数
}
for (int i = 0; i < m_uiDatalist.GetItemCount(); i++)
{
for (int j = 0; j < colCount; j++)
{
buffer.Add(m_uiDatalist.GetItemText(i, j)); //把list内容全部写入一维数组buffer
}
}
CFileDialog dlg(false, _T("*.csv"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("CSV File(*.csv)|*.csv|Text File(*.txt)|*.txt|All File(*.*)|*.*||"), NULL); //打开文件对话框
if (dlg.DoModal() == IDOK)
{
CString filename = dlg.GetPathName(); //获取保存路径
CStdioFile file(filename, CFile::modeCreate | CFile::modeWrite);
CString str = _T("");
//file.WriteString(str); //如果有表头可以添加表头,在第0行
for (int i = 0; i < buffer.GetSize(); i++)
{
if (i != 0 && i % 5 == 0) //5是列数
{
str += _T("\n");
file.WriteString(str); //写入文件
}
str = buffer.GetAt(i) + _T(","); //取出buffer的第i个字符串
str += buffer.GetAt(++i) + _T(",");
str += buffer.GetAt(++i) + _T(",");
str += buffer.GetAt(++i) + _T(",");
str += buffer.GetAt(++i); //追加字符串
}
file.WriteString(str); //写入文件
file.Close();
}
}
参考博客:
(2条消息) 【MFC CListCtrl控件内容导出Excel/.csv文件】_clistctrl存excel_冷少真的拉的博客-CSDN博客