MFC 简单输出EXCEL - (OLE)

三图胜千言

就是酱紫

//打印领料表
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

时间: 2024-11-04 20:42:09

MFC 简单输出EXCEL - (OLE)的相关文章

PHP链式操作输出excel(csv)

工作中经常会遇到产品运营让导出一些简单的比较规范的数据,这时候要是有一个简单的方法可以用就简单多了.下面是我的一个输出简单的excel(csv)的方法类,用到了链式操作.说到链式操作,在jquery中可能经常用到,是不是也感觉到链式操作用起来很爽,我们也在这个类中实现下链式操作. 其实链式操作很简单的,就是在前一个类方法最后返回一个该类的对象($this),提供给下一个方法调用. <?php class Array2csv{ /* *@var string $ext 扩展名 */ private

在Node.js中使用ejsexcel输出EXCEL文件

1.背景 在Nodejs应用程序中输出Excel,第一印象想到的一般是node-xlsx,这类插件不仅需要我们通过JS写入数据,还需要通过JS进行EXCEL显示样式的管理. 这是个大问题,不仅代码冗余,而且非常不易于维护,假设业务需要合并一个单元格,或者换个颜色,我们都需要重新修改代码. 反思这个问题的核心,跟使用JS来操作页面样式其实是同一个道理,我们没有把数据/业务逻辑操作和样式分离. 在WEB开发中,我们有了CSS来分离处理样式的问题. 现在,在输出EXCEL的时候,我们也希望将样式问题分

Silverlight程序之:简单的Excel报表导出方法

Silverlight程序之:简单的Excel报表导出方法 概述 介绍一种简单的Excel报表导出方法. 页面效果 导出效果: 首先我们创建一个Excel表格,将我们的基本信息格式都设置好,如下图所示: 将创建好的Excel表格另存为网页. 打开VS将创建好的报表模版网页文件拖到Web项目新建的Report文件夹 修改其后缀名为aspx 打开文件 添加头部代码 <%@ Page Language="C#" ContentType="application/vnd.ms-

LeetCode Excel Sheet Column Title (输出excel表的列名称)

题意:给一个数字n,输出excel表的列名称. 思路:其实观察可知道,是个26进制的标记而已.那就模拟一下,每次计算一位时就先左移1位,再进行计算. 1 class Solution { 2 public: 3 string convertToTitle(int n) { 4 string ans=""; 5 while(n) //26进制,但是输出时不同而已,是从1开始,而不是0.每次计算将其先左移1位即可. 6 { 7 ans+=(n-1)%26+'A'; 8 n=(n-1-(n-

spring boot Thymeleaf模板引擎 最简单输出例子

spring boot  Thymeleaf模板引擎  最简单输出例子 控制器代码如下: @GetMapping(value = "/test")public String test(Model model){ List<Boy> boy = new ArrayList<Boy>(); boy.add(new Boy("xx",11)); boy.add(new Boy("yy",22)); boy.add(new Boy

xBIM IFC 输出 Excel 报表

目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 xBIM IFC 输出 Excel 报表 xBIM IFC 层次结构 xBIM 多个IFC文件合并 xBIM 插入复制功能 XBIM 基于 WexBIM 文件在 WebGL 浏览和加载 原文地址:https://www.cnblogs.com/w2011/p/8424405.html

SQL Server 按照分类输出Excel

公司销售部门要统计业务员的客户并按照业务员名字输出Excel,看下面程序 --声明需要的变量 declare @sql varchar(600),@TypeID varchar(6),@MyName varchar(10) --每个业务员要有一个序号(数字型) select @TypeID=min(ID) from A_CUST select @MyName =EMPLOYEE_NAME from A_CUST where [email protected]--当存在满足序号的记录时进行处理 w

魔改——MFC SDI 支持 内嵌 EXCEL OLE

==================================声明================================== 本文版权归作者所有 未经作者授权 请勿转载 保留法律追究的权利 本文原创,已获得转载授权的,必须在正文中显要地注明作者和出处,并保证文章(包括本声明)的完整性. 被授权人不可再次授权第三方. 未经作者授权请勿修改(包括本声明),保留法律追究的权利. 未经作者授权请勿用于学术性引用. 未经作者授权请勿用于商业出版.商业印刷.商业引用以及其他商业用途.    

(原创)带模板的DOI输出EXCEL

与OLE一样,模板的作用就是将一些类似标题和表头行这种值固定,格式固定的单元格填充好数据和设置好格式后存储为模板上传到系统中.然后需要时根据上传模板的在SAP系统中的URL打开模板,再进行下一步的操作. DOI上传模板的事务码是OAOR,下面阐述上传的具体步骤: 1.输入T-CODE:OAOR,进入界面后填入类名称,分类类型,对象代码后点击执行. 2.右键"表模板"->输入文件 3.打开自己保存好的模板文件,设置文件描述. 4.展开HRFPM_EXCEL_STANDARD文件夹,