MFC,读Excel

ttlily萝 2018-01-08 09:51:49
不知道为什么 Waves[0] = vResult.dblVal;//将A1单元的值读入数组的第一个元素 这一句显示Waves未定义标识符,请问应该怎么改呢??

这是代码:void CMFCApplication1Dlg::OnBnClickedOpen()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog file(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("EXCEL文件t(*.xls;*.xlsx)|*.xls;*.xlsx||"), AfxGetMainWnd());
if (file.DoModal() == IDOK)
{
strPath = file.GetPathName();
m_Path.SetWindowTextW(strPath);
}
}


void CMFCApplication1Dlg::OnBnClickedread()
{
CApplication app;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
CRange Cells;

LPDISPATCH lpDisp = NULL;
COleVariant vResult;
// TODO: 在此添加控件通知处理程序代码
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if (!app.CreateDispatch(_T("Excel.Application")))
{
MessageBox(_T("Error!Creat Excel Application Server Faile!"));
exit(1);
}
books.AttachDispatch(app.get_Workbooks(), true);
//lpDisp = books.Open(strPath,covOptional,covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional,covOptional);
book.AttachDispatch(books.Add(_variant_t(strPath)));//)获取第三步中选定的Excel文件
sheets.AttachDispatch(book.get_Worksheets(), true);//获取文件中的所有sheet(因为一个Excel文件有几个sheet)
//lpDisp=book.get_ActiveSheet();//
sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1")), true);//获取sheet1区域,当然也可以获取sheet2等等
range.AttachDispatch(sheet.get_Cells(), true);//获取sheet1的所有单元格
range.AttachDispatch(range.get_Item(COleVariant((long)1), COleVariant((long)1)).pdispVal); //获取A1

vResult = range.get_Value2();//获取A1单元的值
Waves[0] = vResult.dblVal;//将A1单元的值读入数组的第一个元素
for (int i = 1; i <= 60; i++)//实现连续读取从A2到A61的数据
{
range.AttachDispatch(range.get_Item(COleVariant((long)2), COleVariant((long)1)).pdispVal); //<span style="color:#ff0000;">这个地方有点费解,表示获取”当前区域“的第一列第二行的数据,注意是“当前区域”,后面会说说。 </span>
vResult = range.get_Value2();
Waves[i] = vResult.dblVal;
}

range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();//释放文件
books.ReleaseDispatch(); //释放啥啥啥
app.ReleaseDispatch();//释放啥啥啥
app.Quit();//Over

}
...全文
481 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧