- 将excel9.h和excel9.cpp拷贝到与代码同一目录下;
- 在要导出数据的.cpp文件里加入包含代码:#include “excel9.h”;
- 点击项目–鼠标右键–添加–现有项,选中excel9.h,excel9.cpp两个文件,将其名字导入到项目目录下;
- 加入以下代码:
CString strPath;
CString strFilter;
strFilter = "Microsoft Office Excel 工作簿(*.xls)|*.xls|";
CFileDialog dlg(FALSE, "*.lus", NULL, OFN_OVERWRITEPROMPT, strFilter, 0);
CMainFrame*pmain =(CMainFrame*)AfxGetMainWnd();
int structsize=0;
DWORD dwVersion,dwWindowsMajorVersion,dwWindowsMinorVersion;
dwVersion = GetVersion();
dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
if (dwVersion < 0x80000000)
structsize =88;
else
structsize =76;
dlg.m_ofn.lStructSize = structsize;
if(dlg.DoModal() == IDOK)
strPath = dlg.GetPathName();
else return FALSE;
CString strPath1;
strPath1 = "";
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
if (!app.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
books.AttachDispatch(app.GetWorkbooks());
book.AttachDispatch(books.Add(_variant_t(strPath1)));
sheets.AttachDispatch(book.GetWorksheets());
sheet.AttachDispatch(sheets.GetItem(_variant_t("Sheet1")));
range.AttachDispatch(sheet.GetCells());
CString str;
int startwave = 400;
int wavenum = 31;
startwave = 360;
wavenum = 39;
for (int num=0;num<wavenum;num++)
{
str.Format(_T("%dnm"),startwave+10*num);
range.SetItem(_variant_t((long)(1)),_variant_t((long)(num+2)),_variant_t(str));
}
str.Format(_T("第%d次:"),1);
range.SetItem(_variant_t((long)(2)),_variant_t((long)(1)),_variant_t(str));
for (int num=0;num<wavenum;num++)
{
str.Format(_T("%d"),num);
range.SetItem(_variant_t((long)(2)),_variant_t((long)(num+2)),_variant_t(str));
}
LPDISPATCH lpDisp = NULL;
CString strSheetName =_T("Sheet2");
try
{
lpDisp =sheets.GetItem(_variant_t(strSheetName));
sheet.AttachDispatch(lpDisp);
}
catch(...)
{
lpDisp = sheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);
sheet.AttachDispatch(lpDisp);
sheet.SetName(strSheetName);
}
sheet.AttachDispatch(sheets.GetItem(_variant_t("Sheet2")));
range.AttachDispatch(sheet.GetCells());
range.SetItem(_variant_t((long)(1)),_variant_t((long)(1)),_variant_t("SCI模式"));
range.SetItem(_variant_t((long)(1)),_variant_t((long)(2)),_variant_t("积分时间:"));
str.Format(_T("%d"),123456);
range.SetItem(_variant_t((long)(2)),_variant_t((long)(2)),_variant_t(str));
range.SetItem(_variant_t((long)(1)),_variant_t((long)(3)),_variant_t("累加次数:"));
str.Format(_T("%d"),0);
range.SetItem(_variant_t((long)(2)),_variant_t((long)(3)),_variant_t(str));
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
book.SaveAs(COleVariant(_variant_t(strPath)),COleVariant(long(56)),covOptional,covOptional,covOptional,covOptional,0,covOptional,covOptional,covOptional,covOptional);
app.SetVisible(FALSE);
app.SetUserControl(true);
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
books.Close();
app.Quit();
app.ReleaseDispatch();
AfxMessageBox("导出成功!");