• MFC 简单输出EXCEL


    三图胜千言

    就是酱紫

    //打印领料表
    void CKnifeDlgDlg::PrintCurUsedTabel(int order)
    {
        // TODO: Add your command handler code here
        char szFilters[] = "hgy Files (*.xls)|*.xls|All Files (*.*)|*.*||";
    
        CFileDialog fileDlg (FALSE, "xls", ReadName + ".xls",
            OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, NULL);
    
        fileDlg.m_ofn.lpstrTitle = "保存"; 
    
        
    
        if( fileDlg.DoModal() == IDOK )
        {
            CString pathName = fileDlg.GetPathName();
    
    
            std::vector<std::map<std::string,std::string>> resultArr = YHdialog::GetOpResultListTool(_knifeclasses);
            std::vector<std::string> title;
            title.push_back("用料材料");
            title.push_back("厚度");
            title.push_back("数量");
            title.push_back("面积");
            std::vector<std::string> dataCol;
            dataCol.push_back("PanelMatrial");
            dataCol.push_back("Thickness");
            dataCol.push_back("PanelNum");
            dataCol.push_back("Allsize");
    
            if(order == 0)
            {
                //反序
                std::reverse(resultArr.begin(),resultArr.end());
            }
            OnWriteDataExcel(pathName, title, dataCol, resultArr);
    
            MessageBox("保存完成");
        }
    }
    
    
    
    
    //写EXCEL
    void CKnifeDlgDlg::OnWriteDataExcel(CString savePath, std::vector<std::string> title,std::vector<std::string> dataMap, std::vector<std::map<std::string,std::string>> dataSrc)
    {
        CString strFile = savePath;  
    
        COleVariant   
            covTrue((short)TRUE),   
            covFalse((short)FALSE),   
            covOptional((long)DISP_E_PARAMNOTFOUND,   VT_ERROR);   
    
        CApplication app;  
        CWorkbook book;  
        CWorkbooks books;  
        CWorksheet sheet;  
        CWorksheets sheets;  
        CRange range;  
        CFont font;  
    
        if (!app.CreateDispatch(_T("Excel.Application")))  
        {  
            MessageBox(_T("Error!Creat Excel Application Server Faile!"));  
        }  
    
        books = app.get_Workbooks();  
        book = books.Add(covOptional);  
        sheets = book.get_Worksheets();  
        sheet = sheets.get_Item(COleVariant((short)1));  
    
        //得到全部Cells   
        range.AttachDispatch(sheet.get_Cells());   
    
        for( long title_col = 0 ; title_col < title.size() ; title_col++ )  
        {
            range.put_Item(
                _variant_t((long)1),    //
                _variant_t((long)title_col+1),    //
                _variant_t(title[title_col].c_str()));  //数据
        }
            
    
    
        //下面是向第二行的前十个单元格中输入1到10,十个数字  
        for( long data_row = 0 ; data_row < dataSrc.size() ; data_row++ )  
        {
            for( long data_col = 0 ; data_col < title.size() ; data_col++ )  
            {
                long row = data_row+2;
                long col = data_col+1;
                CString info;
                info.Format("%s",dataSrc[data_row][dataMap[data_col]].c_str());
    
                range.put_Item(
                    _variant_t(row),    //
                    _variant_t(col),    //
                    _variant_t(info));  //数据
            }
        }
    
        //保存  
        book.SaveCopyAs(COleVariant(strFile));   
        book.put_Saved(true);  
        app.put_Visible(false); 
    
        //释放对象   
        range.ReleaseDispatch();   
        sheet.ReleaseDispatch();   
        sheets.ReleaseDispatch();   
        book.ReleaseDispatch();   
        books.ReleaseDispatch();  
        app.ReleaseDispatch();  
    
        //结尾,释放  
        book.ReleaseDispatch();     
        books.ReleaseDispatch();     
        app.ReleaseDispatch();  
        app.Quit();   
    }
    MFC OLE EXCEL
  • 相关阅读:
    Hadoop第一天
    Python第二天-字典类型的基本使用讲解
    Python第二天-元组的基本使用方法
    Python第二天-list基本功能详解
    Python第一天-str基本功能详解与测试
    while循环
    用户输入
    字典
    if语句
    运算符
  • 原文地址:https://www.cnblogs.com/Again/p/5699027.html
Copyright © 2020-2023  润新知