VC 读写Excel文件

(1)     在VC6.0 中点击View菜单,选中ClassWizard打开类向导对话框,点击右侧的“Add Class”按

钮选择From a Type Library选项,在打开的对话框中找到Office的安装地址并找到EXCEL.EXE,

选中后点击“打开”按钮,此时弹出一个“Confirm Classes”对话框,按住键盘上面的Ctrl键

选中“_Application”、“Workbooks”、“_Workbook”、“Worksheets”、

“_Worksheet”、“Range”(选中这几个够基本的读写操作),此时在工程中会多出来两个文

件,Excel.h和Excel.cpp文件,打开Excel.h文件在文件的开始添加namespace spaceExcel{,

在文件的结束添加},打开Excel.cpp文件在头文件的引用最后的地方添加

using namespace spaceExcel;

(2)      在工程项目的*App类的InitInstance函数中对OLE环境进行初始化:

if (!AfxOleInit())

{

AfxMessageBox("初始化OLE DLL失败!");

returnFALSE;

}

(3)      在工程项目的*.Dlg的类中添加成员变量并在该文件的首部添加上excel.h头文件

spaceExcel::Range       rgMyRge,excelRange;//选区

spaceExcel::_Worksheet  wsMysheet;//工作表对象

spaceExcel::Worksheets  wssMysheets;//工作表管理器

spaceExcel::_Workbook   wbMyBook;//工作薄对象

spaceExcel::Workbooks   wbsMyBooks;//工作薄管理器

spaceExcel::_Application  ExcelApp;//应用程序对象

(4)      操作Excel表格:【读取excel中的数据】

if(!ExcelApp.CreateDispatch("Excel.Application",NULL))

{

AfxMessageBox("未检测到Excel程序!");

}

else

{

ExcelApp.SetVisible(FALSE);//设置excel工作簿为不可见状态

wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),TRUE);

wbMyBook =wbsMyBooks.Open(m_strExternalFilePath,                                                                                                  vtMissing,vtMissing,vtMissing,vtMissing,                                                                                         vtMissing,vtMissing,vtMissing,vtMissing,                                                                                         vtMissing,vtMissing,vtMissing,vtMissing,                                                                                         vtMissing,vtMissing);

wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),TRUE);

wsMysheet =wssMysheets.GetItem(COleVariant((short)1));

rgMyRge =wsMysheet.GetUsedRange();

excelRange =rgMyRge.GetRows();

long nRowNum = excelRange.GetCount();

excelRange =rgMyRge.GetColumns();

long nColumnNum =excelRange.GetCount();

rgMyRge.AttachDispatch(wsMysheet.GetCells(),TRUE);

for (long row = 1; row<= nRowNum; row++)

{

for (long column= 1; column <= nColumnNum; column++)

{

excelRange.AttachDispatch(rgMyRge.GetItem(_variant_t(row),

_variant_t(column)).pdispVal,TRUE);

VARIANTvarItemName = excelRange.GetText();

switch(column)

{

case 1:

strNum= varItemName.bstrVal;

continue;

case2:

strName= varItemName.bstrVal;

continue;

case 3:

strSex= varItemName.bstrVal;

continue;

case 4:

strAcademy= varItemName.bstrVal;

continue;

case 5:

strAdress= varItemName.bstrVal;

continue;

default:

break;

}

}

}

}

【写数据到excel中】

if(!ExcelApp.CreateDispatch("Excel.Application",NULL))

{

AfxMessageBox("创建Excel服务失败!");

return;

}

ExcelApp.SetVisible(FALSE);

wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),TRUE);

wbMyBook.AttachDispatch(wbsMyBooks.Add((_variant_t)strSavePath),TRUE);

wssMysheets.AttachDispatch(wbMyBook.GetSheets(),TRUE);

wssMysheets.Add(vtMissing,vtMissing,_variant_t((long)1),vtMissing);

wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t((long)2)),TRUE);

wsMysheet.Delete();

wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t((long)1)),TRUE);

wsMysheet.SetName("student");

rgMyRge.AttachDispatch(wsMysheet.GetCells(),TRUE);

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

{   //读取列表控件中的数据到Excel文件中

m_list.GetItemText(i,0,strNum,MAX_PATH);

m_list.GetItemText(i,1,strName,MAX_PATH);

m_list.GetItemText(i,2,strSex,MAX_PATH);

m_list.GetItemText(i,3,strAcademy,MAX_PATH);

m_list.GetItemText(i,4,strAdress,MAX_PATH);

rgMyRge.SetItem(_variant_t((long)i+1),_variant_t((long)1),_variant_t(strNum));

rgMyRge.SetItem(_variant_t((long)i+1),_variant_t((long)2),_variant_t(strName));

rgMyRge.SetItem(_variant_t((long)i+1),_variant_t((long)3),_variant_t(strSex));

rgMyRge.SetItem(_variant_t((long)i+1),_variant_t((long)4),_variant_t(strAcademy));

rgMyRge.SetItem(_variant_t((long)i+1),_variant_t((long)5),_variant_t(strAdress));

}

ExcelApp.SetAlertBeforeOverwriting(FALSE);

ExcelApp.SetDisplayAlerts(FALSE);

wsMysheet.SaveAs(strSavePath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,

vtMissing,vtMissing,vtMissing,vtMissing);

AfxMessageBox("Excel文件导出完成!");

(5)      释放excel资源:

excelRange.ReleaseDispatch();

rgMyRge.ReleaseDispatch();

wsMysheet.ReleaseDispatch();

wssMysheets.ReleaseDispatch();

wbMyBook.ReleaseDispatch();

wbsMyBooks.ReleaseDispatch();

ExcelApp.Quit();

ExcelApp.ReleaseDispatch();   //注意:先Quit,再ReleaseDispatch;

注:使用vtMissing需要的头文件:#include <comutil.h>

时间: 2024-08-10 09:15:29

VC 读写Excel文件的相关文章

MFC vs2012 Office2013 读写excel文件

近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2013+MFC. 说明:读写excel文件,通常包括1.ODBC数据库实现;2.通过解析Excel表格文件;3.通过OLE/COM的几种实现方法.本文主要研究通过OLE/COM实现对Excel表格的操作. 步骤: 1.新建MFC对话框.注意勾选自动化,否则后面加入不了需要的库,导致启动服务失败等错误

使用phpexcel类读写excel文件

使用原生php读写excel文件的博文地址: 基于使用原生php读写excel文件的不靠谱,本文将简单介绍如何使用第三方类库phpexcel来读写excel文件. 首先,需要到githut下载phpexcel类库.下载地址:https://github.com/PHPOffice/PHPExcel.

C# 读写Excel文件

公司遇到一些tasks,需要将分析完毕的数据结果保存在Excel文件中.陆陆续续参与了这么多tasks后,现简单总结下: 操纵Excel 文件有多种方法,每种方法都有特色,适用于不同场景. 方法1:调用Office com组件: 也就是调用Interop类.此方法适用于desktop已经安装有Windows Office的情况.功能及其强大,windows Office拥有的功能,几乎通过此都能调用.劣势是读写速度最慢. 方法2:使用ODBC技术读写Excel文件 该方法读写速度似乎最快(没有准

集算器读写EXCEL文件的代码示例

集算器可以方便地读写Excel文件,下面用一个例子进行说明:     描述:从data.xlsx读取订单数据和销售员列表,根据这两个sheet计算各部门的销售额,计算结果写入result.xlsx.     源Excel文件:data.xlsx有两个sheet,其中订单数据如下: 销售员列表如下:     集算器代码: A1-A2:从excel文件data.xlsx分别读取第1和第2个sheet,以序表的形式存储在A1.A2格,即订单数据和销售员列表. A3-A4:先将订单数据和销售员列表按照员

[转]用Python读写Excel文件

转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TAB分割的文本文件(TSV),再在Excel中进行导入或者直接复制粘贴. 前段时间做一个项目,却不得不使用Python直接生成Excel文件,后来随着需求的变化,还要对已有的Excel文件进行读取.在

R读写Excel文件中数据的方法

用R语言读写Excel的方法有很多,但每种方法都有让人头疼的地方,比如xlsx包的代码复杂,只支持Excel2007:RODBC不易理解,限制太多,程序不稳定,会出各种怪毛病.另存为csv格式的方法倒是比较通用比较稳定,但又存在操作麻烦,无法程序化处理多个文件的问题.提取xml也是个办法,但步骤太多代码太复杂,令人望而生畏.用剪贴板转换也不好,这同样需要人工参与,还不如存为csv. 相比之下,用gdata包来读取,配合WriteXLS写入Excel则可以很好的避开上述麻烦.这两个包都支持Exce

java读写excel文件

需求:利用Java读写excel文件 利用jexcelapi实现Java读写excel文件的功能 首先下载并安装jexcelapi JExcelApi v2.6.12 (1911kbytes) 解压后把jxl.jar文件添加到Java Build Path中 Java读取excel文件 Java写入excel文件

用Python读写Excel文件 Contents

用Python读写Excel文件 四种python处理excel模块PK 我主要尝试了四种工具,在此并不会给出他们的排名,因为在不同的应用场景下,做出的选择会不同.   XlsxWriter xlrd&xlwt OpenPyXL Microsoft Excel API 介绍 可以创建Excel 2007或更高版本的XLSX文件 即python-excel,含xlrd.xlwt和xlutils三大模块,分别提供读.写和其他功能 可以读写Excel 2007 XLSX和XLSM文件 直接通过COM组

用Python读写Excel文件的方式比较

虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TAB分割的文本文件(TSV),再在Excel中进行导入或者直接复制粘贴. 前段时间做一个项目,却不得不使用Python直接生成Excel文件,后来随着需求的变化,还要对已有的Excel文件进行读取.在这个过程中,研究并尝试了一些工具,也走了一些弯路.记录下来,下次再有类似需求的时候就不用漫天遍野地搜索了. 超级无敌大PK 我主要尝试了四