VC2010对Excel的操作

VC2010对Excel的操作
1. 创建新的C++工程
创建基于对话框的MFC程序
2. 添加库、添加Excel类库
在工程名上右键,选择“添加”—“类”(或者点击菜单栏的“项目”->“添加类”),选择“TypeLib中的MFC类”(MFC Class From TypeLib)
类来源选“注册表”,在可用的类型库中选择“Microsoft Excel 11.0 Object Library<1.5>”在接口列表框中选择需要的类,在此,我们选择_Application,_Workbook,Worksheet,Range,Workbooks,Worksheets这六个就可以了。
可以看到,六个类被添加了进来。
3. 修改头文件
分别将加进来的六个头文件上面的“#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE" no_namespace”注释掉。
4. 添加头文件
在stdAfx.h头文件中添加加进来的这几个头文件
#include "CApplication.h"
#include "CRange.h"
#include "CWorkbook.h"
#include "CWorkbooks.h"
#include "CWorksheet.h"
#include "CWorksheets.h"
5. 修改错误
编译,会出现两个错误:
\crange.h(335): warning C4003: “DialogBoxW”宏的实参不足
\crange.h(335): error C2059: 语法错误:“,”
双击错误提示,定位在错误行,
    VARIANT DialogBox()
    {
        VARIANT result;
        InvokeHelper(0xf5, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
        return result;
    }
将该函数名“DialogBox()前面加“_”下划线,即“_DialogBox()”,这样就可以编译成功了。
6. 在对话框中添加一个编辑框,并为其关联一CEdit类型变量m_Path,添加“打开”按钮,实现打开一已经存在的Excel文件。并将路径显示在编辑框中。实现代码如下。
void CExportToExcelDlg::OnBnClickedButtonOpen()
{
    CFileDialog file(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
        _T("EXCEL文件t(*.xls;*.xlsx)|*.xls;*.xlsx||"),AfxGetMainWnd());
    if(file.DoModal()==IDOK)
    {
        CString strPath=file.GetPathName();
        m_Path.SetWindowTextW(strPath);
        CApplication app;
        CWorkbook book;
        CWorkbooks books;
        if (!app.CreateDispatch(抽油机示功图_T("Excel.Application")))
        {
            MessageBox(_T("Error!Creat Excel Application Server Faile!"));
            exit(1);
        }
        //books._Workbooks(),true);
        //book.AttachDispatch(books.Add(_variant_t(strPath)));
        books = app.get_Workbooks();       
        book = books.Add(_variant_t(strPath));
        app.put_Visible(true);
        //结尾,释放
        book.ReleaseDispatch(); 
        books.ReleaseDispatch(); 
        app.ReleaseDispatch();
        app.Quit();
    }
}
7. 在对话框中添加“写入”按钮,实现新建一Excel文件(存在则覆盖),并向文件中写入数据。实现代码如下。
void CExportToExcelDlg::OnBnClickedButtonWrite()
{
    CString strFile = _T("D:\\WriteToExcelTest.xlsx");
    COleVariant
        covTrue((short)TRUE),
        covFalse((short)FALSE),
        covOptional((long)DISP_E_PARAMNOTFOUNDVT_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 = _Workbooks();
    //books._Workbooks());可代替上面一行
    book = books.Add(covOptional);
    //book.AttachDispatch(books.Add(covOptional),true); 可代替上面一行
    _Worksheets();
    //sheets._Worksheets(),true); 可代替上面一行
    sheet = sheets.get_Item(COleVariant((short脂肪酸酰胺)1));
    //sheet._Item(_variant_t("sheet1")),true); 可代替上面一行
    //陶瓷刮刀下面两行,是向A1中写入"Yeah!I can write data to excel!"
    range = _Range(COleVariant(_T("A1")),COleVariant(_T("A1")));
    range.put_Value2(COleVariant(_T("Yeah!I can write data to excel!")));
改性材料   
    //下面是向第二行的前十个单元格中输入1到10,十个数字
    for(long i=1;i<11;i++)
        range.put_Item(_variant_t((long)2),_variant_t((long)i),_variant_t((long)i));
    //设置列宽
    range = sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("J1")));
    range.put_ColumnWidth(_variant_t((long)5));
    //显示表格
    app.put_Visible(TRUE);
    //保存
    book.SaveCopyAs(COleVariant(strFile));
    book.put_Saved(true);
    //结尾,释放
医用消毒灭菌    book.ReleaseDispatch(); 
    books.ReleaseDispatch(); 
    app.ReleaseDispatch();
    app.Quit();
}
8. 在对话框中添加列表控件,并关联变量m_Grid,并设置显示为报表样式。在对话框中添加“写入列表”按钮,实现将对话框中已有的表写入到Excel中。实现代码如下。

本文发布于:2024-09-22 02:01:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/162055.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:添加   对话框   实现   写入   错误   按钮   选择
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议