在VS2017的MFC中将数组数据存入EXCEL表格里的完整代码
时间: 2024-03-26 19:39:41 浏览: 145
以下是在VS2017的MFC中将数组数据存入Excel表格的完整代码:
首先,在你的MFC应用程序中添加以下头文件:
```cpp
#include <afxdisp.h>
```
然后,在你的CMainFrame类中添加以下代码:
```cpp
void CMainFrame::OnExportToExcel()
{
// 创建Excel应用程序对象
_Application app;
if (!app.CreateDispatch(_T("Excel.Application")))
{
AfxMessageBox(_T("无法创建Excel应用程序对象!"));
return;
}
// 创建Excel工作簿对象
_Workbook workbook;
workbook.AttachDispatch(app.get_Workbooks()->Add());
// 创建Excel工作表对象
_Worksheet worksheet;
worksheet.AttachDispatch(workbook.get_ActiveSheet());
// 设置Excel单元格的标题
worksheet.put_Range(_variant_t(_T("A1")), _variant_t(_T("姓名")));
worksheet.put_Range(_variant_t(_T("B1")), _variant_t(_T("年龄")));
worksheet.put_Range(_variant_t(_T("C1")), _variant_t(_T("性别")));
// 定义一个二维数组,存储人员数据
CString arrData[3][3] = {
{ _T("张三"), _T("20"), _T("男") },
{ _T("李四"), _T("25"), _T("女") },
{ _T("王五"), _T("30"), _T("男") }
};
// 将人员数据写入Excel单元格
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
worksheet.put_Range(_variant_t(CString(_T("A")) + CString(i + 2)), _variant_t(arrData[i][0]));
worksheet.put_Range(_variant_t(CString(_T("B")) + CString(i + 2)), _variant_t(arrData[i][1]));
worksheet.put_Range(_variant_t(CString(_T("C")) + CString(i + 2)), _variant_t(arrData[i][2]));
}
}
// 保存Excel工作簿
CString strPath = GetAppPath() + _T("ArrayData.xlsx");
workbook.SaveAs(_variant_t(strPath));
// 关闭Excel工作簿和Excel应用程序
workbook.Close();
app.Quit();
AfxMessageBox(_T("数组数据已成功导出到Excel表格!"));
}
CString CMainFrame::GetAppPath()
{
// 获取应用程序的模块句柄
HMODULE hModule = AfxGetInstanceHandle();
// 获取应用程序的完整路径
TCHAR szPath[MAX_PATH];
::GetModuleFileName(hModule, szPath, MAX_PATH);
// 去掉应用程序名称,只保留路径
CString strPath = szPath;
int nPos = strPath.ReverseFind('\\');
if (nPos != -1)
{
strPath = strPath.Left(nPos + 1);
}
return strPath;
}
```
其中,OnExportToExcel()函数是导出数组数据到Excel表格的函数,GetAppPath()函数是获取应用程序路径的函数。你可以在菜单栏中添加一个“导出数组数据”菜单项,并在其响应函数中调用OnExportToExcel()函数来导出数组数据到Excel表格。
需要注意的是,导出数组数据到Excel表格可能会比较耗时,所以在实际使用中需要进行优化。
阅读全文