Ado操作excel表格实现成绩计算及统计
2012-05-31 15:09
162 查看
作者:罗亭
下载源代码
概述:
微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。本程序基于VC软件平台,使用ADO组件访问excel表格形式的成绩单,实现成绩计算及统计。
【关键字】:ADO; excel;
步骤及说明:
1. 在StdAfx.h头文件中,用#import指令引入ADO类型库 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
说明:本程序首先在XP系统上编译并链接成功,生成.exe文件,放在目标机器win7系统中运行报数据库链接失败,经查阅网页(http://www.docin.com/p-349640117.html): 原因为操作系统msado15.dll动态链接库文件不同,在不同操作系统运行时,需先替换相应操作系统的链接库重新编译。
2. COM库的初始化,这项工作通常在CWinApp::InitInstance()的重载函数中完成
3. //创建Connection对象并连接数据库
说明:
(1)通过Microsoft Jet 数据库引擎实现对Excel表的连接;
(2)不同版本的Excel对应不同的属性值:用于 Extended Properties 值设置有效 Excel 版本。 对于 Microsoft Excel 8.0 (97)、9.0 (2000) 和 10.0 (2002) 工作簿,使用 Excel 8.0;
(3)Excel 工作簿的区域中第一行默认认为可标题行 (或字段名)。如果第一个区域不包含标题, 可指定 HDR = NO 您连接字符串中扩展属性中。 如果首行不包含页眉, OLEDB 提供程序自动名称字段对 (其中将 F 1 表示第一个字段, F2 将表示第二个字段等))
4. 创建记录集对象
5. 成绩计算统计
获取表格数据时可以使用m_pRecordset->GetFields()->GetItem((long)i)->Value;A列为第0列,B列为第1列,使用另一种函数m_pRecordset -> GetCollect(L"字段名")编译错误,原因可能是字符段名为汉字,表格单元格式为数值或常规时,数据类型默认为VT_R8,即_variant_t.vt = VT_R8,表示数据为double型数据。
写入计算结果到excel表格可以使用m_pRecordset -> GetFields() -> GetItem((long)i) -> Value = _variant_t(result),result表示计算结果。
6. 程序说明:
本程序基于ADO组件动态访问excel表格,计算学生成绩总分,公式为D+E+H*0.7,统计最高分,最低分,平均分,统计优秀,良好,中等,及格,不及格学生人数及所占比例。
下载源代码
概述:
微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。本程序基于VC软件平台,使用ADO组件访问excel表格形式的成绩单,实现成绩计算及统计。
【关键字】:ADO; excel;
步骤及说明:
1. 在StdAfx.h头文件中,用#import指令引入ADO类型库 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
说明:本程序首先在XP系统上编译并链接成功,生成.exe文件,放在目标机器win7系统中运行报数据库链接失败,经查阅网页(http://www.docin.com/p-349640117.html): 原因为操作系统msado15.dll动态链接库文件不同,在不同操作系统运行时,需先替换相应操作系统的链接库重新编译。
2. COM库的初始化,这项工作通常在CWinApp::InitInstance()的重载函数中完成
if (!AfxOleInit()) { AfxMessageBox("初始化OLE DLL失败:("); return FALSE; }
3. //创建Connection对象并连接数据库
_Connection m_pConnection; BOOL CGradeCounterDlg::ConnectionDb() { //创建ADO连接 m_pConnection.CreateInstance(__uuidof(Connection)); CString strSQL; strSQL.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s; Extended Properties = Excel 5.0;Persist Security Info=False",m_fn); //m_fn表示输入的excel文件路径名
说明:
(1)通过Microsoft Jet 数据库引擎实现对Excel表的连接;
(2)不同版本的Excel对应不同的属性值:用于 Extended Properties 值设置有效 Excel 版本。 对于 Microsoft Excel 8.0 (97)、9.0 (2000) 和 10.0 (2002) 工作簿,使用 Excel 8.0;
(3)Excel 工作簿的区域中第一行默认认为可标题行 (或字段名)。如果第一个区域不包含标题, 可指定 HDR = NO 您连接字符串中扩展属性中。 如果首行不包含页眉, OLEDB 提供程序自动名称字段对 (其中将 F 1 表示第一个字段, F2 将表示第二个字段等))
try{ //打开****.xls m_pConnection->Open((_bstr_t)strSQL,"","",adModeUnknown); } catch (_com_error e) { CString strError; strError.Format("警告:打开链接发生异常。错误信息:%s",e.ErrorMessage()); AfxMessageBox(strError); return false; } return true; }
4. 创建记录集对象
_RecordsetPtr m_pRecordset; CString strSQL=_T(""); strSQL.Format(_T("SELECT * FROM [Sheet1$] "));//excel表名称需写成[xxx$]形式,否则编译时出现IDispatch error #3127错误 m_pRecordset.CreateInstance(__uuidof(Recordset)); try{ m_pRecordset->Open((_bstr_t)strSQL.AllocSysString(), (_variant_t)m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); } catch (_com_error e) { CString strError; strError.Format("警告:打开数据表时发生异常。错误信息: %s",e.ErrorMessage()); AfxMessageBox(strError); return ; }
5. 成绩计算统计
获取表格数据时可以使用m_pRecordset->GetFields()->GetItem((long)i)->Value;A列为第0列,B列为第1列,使用另一种函数m_pRecordset -> GetCollect(L"字段名")编译错误,原因可能是字符段名为汉字,表格单元格式为数值或常规时,数据类型默认为VT_R8,即_variant_t.vt = VT_R8,表示数据为double型数据。
写入计算结果到excel表格可以使用m_pRecordset -> GetFields() -> GetItem((long)i) -> Value = _variant_t(result),result表示计算结果。
6. 程序说明:
本程序基于ADO组件动态访问excel表格,计算学生成绩总分,公式为D+E+H*0.7,统计最高分,最低分,平均分,统计优秀,良好,中等,及格,不及格学生人数及所占比例。
相关文章推荐
- Ado操作excel表格实现成绩计算及统计
- 6.对学生成绩进行统计计算,参加考试的有6名学生,考试成绩分别为94.5,89.0,79.5,64.5,81.5,73.5,显示考试的总分和平均分,之后显示大于考试平均分的成绩信息。请写出实现上述功能
- Linux-C基础知识学习:C语言作业-将5个学生成绩保存在一个数组中,单独实现一个计算平均成绩的average函数, 在main函数中获取该函数返回的平均值,并打印。
- vb.net 利用ADO实现数据库的删除、插入、修改操作(adodb)
- Java实现操作excel表格
- VS2010 C++ 操作Excel表格的编程实现
- VS2010 C++ 操作Excel表格的编程实现
- Java MapReduce 基本计算操作实现实战
- Java实现对Excel表格的操作工具类
- 动态函数调用实现下列操作,输入2个数以及操作符计算结果。@求最大公约数 $求最小公倍数 -求差 +求和
- 动态函数调用实现下列操作,输入2个数以及操作符计算结果@ 求最大公约数 $求最小公倍数 - 求差 + 求和 等等
- VS2010 C++ 操作Excel表格的编程实现
- VS2010 C++ 操作Excel表格的编程实现
- PAT Basic 1038. 统计同成绩学生(20)(C语言实现)
- VS2010 C++ 操作Excel表格的编程实现
- 使用Matlab从Excel中读取数据并实现回归统计计算
- 使用ADO操作SQL SERVER 通过'OLE DB 访问 ACCESS 数据库 ,实现数据交换
- VS2010 C++ 操作Excel表格的编程实现
- awk实现求和、平均、最大值和最小值的计算操作
- Python实现的排列组合计算操作示例