六、得到当前路径,打开模板,导出数据到excel中

 

<span style="white-space:pre">    </span>wchar_t   path[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);
CString strPath = path;
strPath   +=   "\template";<span style="white-space:pre">    </span>//得到当前路径
m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks(), TRUE);
m_ExlBook.AttachDispatch(m_ExlBooks.Add((_variant_t)strPath), TRUE);    //加载EXCEL模板
m_ExlSheets.AttachDispatch(m_ExlBook.GetSheets(), TRUE);    //加载Sheet页面
m_ExlSheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);  //添加新的Sheet页面
m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)2)), TRUE);  //删除第二个Sheet页面
m_ExlSheet.Delete();
m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)1)), TRUE);  //把第一个Sheet页面的名字改为TestSheet
m_ExlSheet.SetName(L"TestSheet");
///合并第一行单元格A1至D1///
m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t("A1"), _variant_t("D1")), TRUE); //加载要合并的单元格
m_ExlRge.Merge(_variant_t((long)0));
///设置表格内容///
m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(), TRUE);   //加载所有单元格
m_ExlRge.SetItem(_variant_t((long)1), _variant_t((long)1), _variant_t("软件工程本科课程"));
m_ExlRge.SetItem(_variant_t((long)2), _variant_t((long)1), _variant_t("课程名"));
m_ExlRge.SetItem(_variant_t((long)2), _variant_t((long)2), _variant_t("课时"));
m_ExlRge.SetItem(_variant_t((long)2), _variant_t((long)3), _variant_t("难度"));
m_ExlRge.SetItem(_variant_t((long)2), _variant_t((long)4), _variant_t("教学方式"));
m_ExlRge.SetItem(_variant_t((long)3), _variant_t((long)1), _variant_t("c语言"));
m_ExlRge.SetItem(_variant_t((long)3), _variant_t((long)2), _variant_t("60"));
m_ExlRge.SetItem(_variant_t((long)3), _variant_t((long)3), _variant_t("普通"));
m_ExlRge.SetItem(_variant_t((long)3), _variant_t((long)4), _variant_t("老师讲课"));
m_ExlRge.SetItem(_variant_t((long)4), _variant_t((long)1), _variant_t("c语言课程设计"));
m_ExlRge.SetItem(_variant_t((long)4), _variant_t((long)2), _variant_t("10"));
m_ExlRge.SetItem(_variant_t((long)4), _variant_t((long)3), _variant_t("简单"));
m_ExlRge.SetItem(_variant_t((long)4), _variant_t((long)4), _variant_t("自学"));
m_ExlRge.SetItem(_variant_t((long)5), _variant_t((long)1), _variant_t("操作系统"));
m_ExlRge.SetItem(_variant_t((long)5), _variant_t((long)2), _variant_t("60"));
m_ExlRge.SetItem(_variant_t((long)5), _variant_t((long)3), _variant_t("很难"));
m_ExlRge.SetItem(_variant_t((long)5), _variant_t((long)4), _variant_t("老师讲课"));
m_ExlRge.AttachDispatch(m_ExlSheet.GetUsedRange()); //加载已使用的单元格
m_ExlRge.SetWrapText(_variant_t((long)1));  //设置单元格内的文本为自动换行
//设置对齐方式为水平垂直居中
//水平对齐:默认=1,居中=-4108,左=-4131,右=-4152
//垂直对齐:默认=2,居中=-4108,左=-4160,右=-4107
m_ExlRge.SetHorizontalAlignment(_variant_t((long)-4108));
m_ExlRge.SetVerticalAlignment(_variant_t((long)-4108));

 

  七、保存并退出

 

<span style="white-space:pre">    </span>CFileDialog dlg(FALSE);<span style="white-space:pre">    </span>//公用对话框,FALSE表示保存,TRUE表示打开
if (dlg.DoModal() == IDOK)
{
strPath = dlg.GetPathName();
m_ExlSheet.SaveAs(strPath, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing);
//m_ExlApp.SetVisible(TRUE);
}
m_ExlBook.Close(covFalse, covOptional, covOptional);
m_ExlBooks.Close();
m_ExlApp.Quit();    //退出程序
m_ExlRge.ReleaseDispatch();     //释放对象(相当重要!)
m_ExlSheet.ReleaseDispatch();
m_ExlSheets.ReleaseDispatch();
m_ExlBook.ReleaseDispatch();
m_ExlBooks.ReleaseDispatch();
m_ExlApp.ReleaseDispatch(); //m_ExlApp一定要释放,否则程序结束后会有一个excel进程驻留在内存中,程序重复运行的时候会出错