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
FilesMicrosoft " 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());
{
CString strPath=file.GetPathName();
m_Path.SetWindowTextW(strPath);
CApplication app;
CWorkbook book;
CWorkbooks books;
if (!app.CreateDispatch(_T("ation")))
{
MessageBox(_T("Error!Creat Excel Application Server Faile!"));
exit(1);
}
//Dispatch(_Workbooks(),true);
if(file.DoModal()==IDOK)
//Dispatch((_variant_t(strPath)));
books = app.get_Workbooks();
book = books.Add(_variant_t(strPath));
app.put_Visible(true);
//结尾,释放
eDispatch();
eDispatch();
eDispatch();
app.Quit();
}
}
7. 在对话框中添加“写入”按钮,实现新建一Excel文件(存在则覆盖),并向文件中写入
数据。实现代码如下。
void CExportToExcelDlg::OnBnClickedButtonWrite()
{
CString strFile = _T("D:x");
COleVariant
covTrue((short)TRUE),
covFal((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("ation")))
{
MessageBox(_T("Error!Creat Excel Application Server Faile!"));
}
books = _Workbooks();
//Dispatch(_Workbooks());可代替上面一行
book = (covOptional);
//Dispatch((covOptional),true); 可代替上面一行
sheets=_Worksheets();
//Dispatch(_Worksheets(),true); 可代替上面一行
sheet = sheets.get_Item(COleVariant((short)1));
//Dispatch(_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++)
_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);
//保存
pyAs(COleVariant(strFile));
_Saved(true);
//结尾,释放
book.ReleaDispatch();
books.ReleaDispatch();
app.ReleaDispatch();
();
}
8. 在对话框中添加列表控件,并关联变量m_Grid,并设置显示为报表样式。在对话框中
添加“写入列表”按钮,实现将对话框中已有的表写入到Excel中。实现代码如下。
在初始化函数中,先初始化列表。
//设置列表视图的扩展风格
m_endedStyle(LVS_EX_FLATSB //扁平风格显示滚动条
|LVS_EX_FULLROWSELECT //允许整行选中
|LVS_EX_HEADERDRAGDROP //允许整列拖动
//单击选中项 |LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES); //画出网格线
//设置表头
m_Column(0,_T("编号"),LVCFMT_LEFT,100,0);
m_Column(1,_T("姓名"),LVCFMT_LEFT,100,1);
m_Column(2,_T("所属部门"),LVCFMT_LEFT,100,2);
//向列表中插入数据
int count = 0;
m_Item(count,_T("001"));
m_mText(count,1,_T("张一"));
m_mText(count++,2,_T("销售部"));
m_Item(count,_T("002"));
m_mText(count,1,_T("列二"));
m_mText(count++,2,_T("研发部"));
m_Item(count,_T("003"));
m_mText(count,1,_T("宇三"));
m_mText(count++,2,_T("采购部"));
m_Item(count,_T("004"));
m_mText(count,1,_T("宙四"));
m_mText(count,2,_T("宣传部"));
再编写按钮的响应函数
void CExportToExcelDlg::OnBnClickedButtonWritelist()
{
// TODO: 在此添加控件通知处理程序代码
CString strFile = _T("D:");
COleVariant
covTrue((short)TRUE),
covFal((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CApplication app;
CWorkbook book;
CWorkbooks books;
CWorksheet sheet;
CWorksheets sheets;
CRange range;
for (int tnum=0;tnum { for (int num=0;num<3;num++) { if (!tnum) { _Item(_variant_t((long)(tnum+1)),_variant_t((long)(num+1)), _variant_t(sText[num])); } el { _Item(_variant_t((long)(tnum+1)),_variant_t((long)(num+1)), _variant_t(m_mText(tnum-1,num))); } } } //保存 pyAs(COleVariant(strFile)); _Saved(true); 按【打开】按钮,出现打开对话框,可选择Excel打开。 按【写入】按钮,打开Excel文件。 按下【写入列表】,打开Excel文件。
本文发布于:2023-11-23 00:56:37,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/170067219798835.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:VC2010对Excel的操作.doc
本文 PDF 下载地址:VC2010对Excel的操作.pdf
留言与评论(共有 0 条评论) |