MFC中,如何通过BUTTON控件来实现对计算机中某一文件路径下的CSV文件进行遍历
时间: 2023-11-27 11:50:52 浏览: 33
在 MFC 中,可以用 CFileDialog 类来实现打开文件对话框,让用户选择需要遍历的 CSV 文件。接下来,可以使用 CStdioFile 类来读取 CSV 文件中的数据。
以下是一个简单的示例代码:
1. 在对话框类的头文件中添加以下成员变量和方法:
```cpp
class CMyDlg : public CDialogEx
{
// ...
private:
CString m_strFolderPath; // 文件夹路径
CListCtrl m_listData; // 数据列表控件
void TraverseCSVFiles(); // 遍历 CSV 文件
};
```
2. 在 OnInitDialog 方法中初始化数据列表控件:
```cpp
BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// ...
// 初始化数据列表控件
m_listData.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_listData.InsertColumn(0, _T("Column1"), LVCFMT_LEFT, 100);
m_listData.InsertColumn(1, _T("Column2"), LVCFMT_LEFT, 100);
// ...
return TRUE;
}
```
3. 在 BUTTON 的单击事件方法中调用打开文件对话框,并保存用户选择的文件夹路径:
```cpp
void CMyDlg::OnBnClickedBtnBrowse()
{
CFileDialog dlg(TRUE, _T("csv"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("CSV Files (*.csv)|*.csv||"), this);
if (dlg.DoModal() == IDOK)
{
m_strFolderPath = dlg.GetFolderPath();
// ...
}
}
```
4. 实现遍历 CSV 文件的方法 TraverseCSVFiles:
```cpp
void CMyDlg::TraverseCSVFiles()
{
CString strSearchPath = m_strFolderPath + _T("\\*.csv");
CFileFind finder;
BOOL bWorking = finder.FindFile(strSearchPath);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDirectory() || finder.IsDots())
continue;
CString strFilePath = finder.GetFilePath();
CStdioFile file;
if (file.Open(strFilePath, CFile::modeRead | CFile::typeText))
{
CString strLine;
while (file.ReadString(strLine))
{
// 处理每行数据,例如将逗号分隔的数据分割成多个字段
// ...
// 将数据添加到列表控件中
int nIndex = m_listData.GetItemCount();
m_listData.InsertItem(nIndex, strField1);
m_listData.SetItemText(nIndex, 1, strField2);
// ...
}
file.Close();
}
}
}
```
5. 在 BUTTON 的单击事件方法中调用 TraverseCSVFiles 方法:
```cpp
void CMyDlg::OnBnClickedBtnTraverse()
{
m_listData.DeleteAllItems(); // 清空数据列表
TraverseCSVFiles();
}
```
这样就可以通过 BUTTON 控件来实现对计算机中某一文件路径下的 CSV 文件进行遍历了。