VC列表控件保存到Excle
秀小川 2011-12-28 10:59:32 CString strPath,strText="",strFile,name,table;
CFileDialog file(FALSE,NULL,"TestTab",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"EXCEL文件(*.xlsx)|*.xlsx| |",AfxGetMainWnd());
if(file.DoModal()==IDOK)
{
strPath=file.GetPathName();
if(strPath.Right(4) != ".xlsx")
strPath +=".xlsx";
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//创建Excel 2000服务器(启动Excel)
if (!app.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
// app.SetVisible(false);
//利用模板文件建立新文档
CString ExcelPath = path;
ExcelPath += "\\SQLToExcel";
books.AttachDispatch(app.GetWorkbooks(),true);
book.AttachDispatch(books.Add(_variant_t(ExcelPath)));
//得到Worksheets
sheets.AttachDispatch(book.GetWorksheets(),true);
//得到sheet1
sheet.AttachDispatch(sheets.GetItem(_variant_t("sheet1")),true);
range.AttachDispatch(sheet.GetCells(),true);
CString sText[]={"用户Id","姓名","联系电话","城市","小区"};
for(int setnum=0;setnum<m_Grid.GetItemCount()+1;setnum++)
{
for(int num=0;num<5;num++)
{
if(!setnum)
{
range.SetItem(_variant_t((long)(setnum+1)),_variant_t((long)(num+1)),
_variant_t(sText[num]));
}
else
{
range.SetItem(_variant_t((long)(setnum+1)),_variant_t((long)(num+1)),
_variant_t(m_Grid.GetItemText(setnum-1,num)));
}
}
}
sheet.SaveAs(strPath,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
我用这段代码会出现“类workbooks的Add方法无效”!
之前在另外一个代码上也能用....
在之前那段代码上也会出现推出之后Excle也没有保存!有一个xls文件 还有一个缓存文件!