




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、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这六个就可以了。可以看到,六
2、个类被添加了进来。3. 修改头文件分别将加进来的六个头文件上面的“#import "C:Program FilesMicrosoft OfficeOFFICE11EXCEL.EXE" no_namespace”注释掉。4. 添加头文件在stdAfx.h头文件中添加加进来的这几个头文件#include "CApplication.h"#include "CRange.h"#include "CWorkbook.h"#include "CWorkbooks.h"#include "CWor
3、ksheet.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;将该函数名“DialogBo
4、x()”前面加“_”下划线,即“_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|"),AfxGetM
5、ainWnd();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.AttachDisp
6、atch(app.get_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文件(存在则覆盖),并向文件中写
7、入数据。实现代码如下。void CExportToExcelDlg:OnBnClickedButtonWrite()CString strFile = _T("D:WriteToExcelTest.xlsx");COleVariant covTrue(short)TRUE), covFalse(short)FALSE), covOptional(long)DISP_E_PARAMNOTFOUND, VT_ERROR); CApplication app;CWorkbook book;CWorkbooks books;CWorksheet sheet;CWorksheets
8、sheets;CRange range;CFont font;if (!app.CreateDispatch(_T("Excel.Application")MessageBox(_T("Error!Creat Excel Application Server Faile!");books = app.get_Workbooks();/books.AttachDispatch(app.get_Workbooks();可代替上面一行book = books.Add(covOptional);/book.AttachDispatch(books.Add(cov
9、Optional),true); 可代替上面一行sheets=book.get_Worksheets();/sheets.AttachDispatch(book.get_Worksheets(),true); 可代替上面一行sheet = sheets.get_Item(COleVariant(short)1);/sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1"),true); 可代替上面一行/下面两行,是向A1中写入"Yeah!I can write data to excel!"rang
10、e = sheet.get_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 = shee
11、t.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. 在对话框
12、中添加列表控件,并关联变量m_Grid,并设置显示为报表样式。在对话框中添加“写入列表”按钮,实现将对话框中已有的表写入到Excel中。实现代码如下。在初始化函数中,先初始化列表。/设置列表视图的扩展风格m_Grid.SetExtendedStyle(LVS_EX_FLATSB/扁平风格显示滚动条|LVS_EX_FULLROWSELECT/允许整行选中|LVS_EX_HEADERDRAGDROP/允许整列拖动|LVS_EX_ONECLICKACTIVATE/单击选中项|LVS_EX_GRIDLINES);/画出网格线/设置表头m_Grid.InsertColumn(0,_T("编号&
13、quot;),LVCFMT_LEFT,100,0);m_Grid.InsertColumn(1,_T("姓名"),LVCFMT_LEFT,100,1);m_Grid.InsertColumn(2,_T("所属部门"),LVCFMT_LEFT,100,2);/向列表中插入数据int count = 0;m_Grid.InsertItem(count,_T("001");m_Grid.SetItemText(count,1,_T("张一");m_Grid.SetItemText(count+,2,_T("销售
14、部");m_Grid.InsertItem(count,_T("002");m_Grid.SetItemText(count,1,_T("列二");m_Grid.SetItemText(count+,2,_T("研发部");m_Grid.InsertItem(count,_T("003");m_Grid.SetItemText(count,1,_T("宇三");m_Grid.SetItemText(count+,2,_T("采购部");m_Grid.InsertIt
15、em(count,_T("004");m_Grid.SetItemText(count,1,_T("宙四");m_Grid.SetItemText(count,2,_T("宣传部");再编写按钮的响应函数void CExportToExcelDlg:OnBnClickedButtonWritelist()/ TODO: 在此添加控件通知处理程序代码CString strFile = _T("D:WriteListToExcelTest.xlsx");COleVariant covTrue(short)TRUE),
16、covFalse(short)FALSE), covOptional(long)DISP_E_PARAMNOTFOUND, VT_ERROR); CApplication app;CWorkbook book;CWorkbooks books;CWorksheet sheet;CWorksheets sheets;CRange range;if (!app.CreateDispatch(_T("Excel.Application")MessageBox(_T("Error!Creat Excel Application Server Faile!");e
17、xit(1);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(); CString sText=_T("编号"),_T("姓名"),_T("所属部门");for (int setnum=0;setnum<m_Grid.
18、GetItemCount()+1;setnum+)for (int num=0;num<3;num+)if (!setnum)range.put_Item(_variant_t(long)(setnum+1),_variant_t(long)(num+1),_variant_t(sTextnum);elserange.put_Item(_variant_t(long)(setnum+1),_variant_t(long)(num+1),_variant_t(m_Grid.GetItemText(setnum-1,num);/保存book.SaveCopyAs(COleVariant(strFil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年纺织品检验员证书考试题型解析试题及答案
- 广告设计师考试流行元素评估题及答案
- 现代染色技术的操作要点试题及答案
- 建筑设备预算试题及答案
- 助理广告师试题及答案多个维度
- DB42-T 2328-2024 湖北省一河(湖)一策方案编制导则
- 商业美术设计师实战技术试题及答案
- 化学中级考试题及答案
- 2024年纺织产品研发中的关键问题试题及答案
- office笔试题库及答案
- 历史一战二战试卷及答案
- 2025年导游从业资格知识点合辑
- (三诊)成都市2022级高中高三毕业班第三次诊断性检物理试卷(含答案)
- 四川省成都市蓉城名校联盟2024-2025学年高一下学期期中考试英语(含答案)
- 2025-2030中国户外背包行业市场发展趋势与前景展望战略研究报告
- 2025广东二模语文(含答案)
- 建投国电准格尔旗能源有限公司招聘考试真题2024
- 注塑技术员个人简历样板范文
- 围术期过敏反应诊治的专家共识(全文)
- 2013年俄语专业四级历年真题详解
- 论中学语文教师美学素养的培养
评论
0/150
提交评论