MFC向Excel读写数据详细方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MFC读写Excel详细步骤

准备工作:

打开开发环境VC或VS新建一个基于对话框的简单工程;通过类向导添加类-->类型库中的MFC类

打开创建类对话框

选择文件,位置编辑框填入Excel.exe的详细目录,可以通过浏览选择,在接口下方选择_Application(应用),_Workbook(视窗),Workbooks(整个视窗),Worksheets(单个表单),Worksheets(整个表单),Range(元素集合)六个基本的接口并生成类。选择接口后单击向右的单箭头即可,双箭头是生成所有接口的类;

生成类之后将添加的几个类的头文件中的

#import "E:\\Microsoft Office\\Office14\\EXCEL.EXE" no_namespace

注释掉,加上#include

然后编译,出现下面这俩个错误;点击DialodBoxA找到错误位置将DialodBox改为_DialodBox;再编译,没有错误;

warning C4003: “DialogBoxA”宏的实参不足

error C2059: 语法错误:“,”

在要操作Excel类的CPP文件中包含头文件:

准备工作完成。

向Excel写数据:

CFileDialog dlg(FALSE, ".xlsx",NULL,

OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Microsoft Excel

Files(*.xls)|*.xls|Microsoft Excel Files(*.xlsx)(推荐)|*.xlsx|All Files (*.*)|*.*||");

dlg.m_ofn.lpstrTitle ="保存到Excel";

if (dlg.DoModal() == IDOK)

{

//获取路径

CString strFileName=dlg.GetPathName();

CWorkbooks books;

CWorkbook book;

CApplication app;

CWorksheets sheets;

CWorksheet sheet;

CRange range;

CMyFont font;

CRange cols;

COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

if (!app.CreateDispatch("Excel.Application"))

{

this->MessageBox("无法创建Excel应用!");

return;

}

books=app.get_Workbooks();

book=books.Add(covOptional);

sheets=book.get_Worksheets();

sheet=sheets.get_Item(COleVariant((short)1));

//获得(A,1)(B,1)两个单元格

range=sheet.get_Range(COleVariant("A1"),COleVariant("B6"));

//设置公式“=RAND()*100000”

range.put_Formula(COleVariant("=RAND()*1000"));

//选择整列,并设置宽度为自适应

cols = range.get_EntireColumn();

cols.AutoFit();

//设置字体为粗体

font = range.get_Font();

font.put_Bold(COleVariant((short)TRUE));

//设置数字格式为货币型

//range.put_NumberFormat(COleVariant("$0.00"));

CString Range327[]={"C1","C2","C3","C4","C5","C6"};

CString fileinfo[]={"齿形","齿向","齿距","左齿面","右齿面","径跳"};

for(int i=0;i<6;i++)

{

range = sheet.get_Range(COleVariant(Range327[i]),

COleVariant(Range327[i]));

range.put_Value2(COleVariant(fileinfo[i]));

}

/*

//获得坐标为(C,2)单元格 //显示Excel表

range = sheet.get_Range(COleVariant("C1"), COleVariant("F10"));

//设置单元格内容位Hello Excel

range.put_Value2(COleVariant("哈尔滨精达测量仪器有限公司"));

*/

//选择整列,并设置宽度为自适应

cols = range.get_EntireColumn();

cols.AutoFit();

//显示列表控件

//app.put_Visible(TRUE);

//允许其他用户控制Excel,否则Excel、将一闪而过

//app.put_UserControl(TRUE);

book.SaveCopyAs(COleVariant(strFileName));

book.put_Saved(true);

range.ReleaseDispatch();

font.ReleaseDispatch();

cols.ReleaseDispatch();

sheet.ReleaseDispatch();

sheets.ReleaseDispatch();

book.ReleaseDispatch();

books.ReleaseDispatch();

//以下关闭应用的两条代码结合使用且顺序不能反,否则无法关闭进程

app.Quit();

app.ReleaseDispatch();

相关文档
最新文档