如何用VC++来实现Excel文件的读取
如何用VC++来实现Excel文件的读取?????
[解决办法]
- C/C++ code
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); // app.SetVisible(TRUE); //释放对象 range.ReleaseDispatch(); sheet.ReleaseDispatch(); sheets.ReleaseDispatch(); book.ReleaseDispatch(); books.ReleaseDispatch(); app.ReleaseDispatch(); }
[解决办法]
看看这个
http://blog.sina.com.cn/s/blog_4504388f0100073f.html