前言

在MFC读写Excel表格时,稍微有一点点点的问题,都不能通过。甚至,仅仅是调整几行代码,也不能通过。把这些坑记录下来,分享出来。

坑-No.1

CString sDriver = L"Microsoft Excel Driver (*.XLS)";// 驱动

上面这句话是加载驱动的。我本想着自己写一遍,而不是粘贴别人的,为了加深印象。结果,Driver后面有一个英文空格,没有加上。导致失败:未发现数据源名称并且未指定默认驱动程序。

坑-No.2

sql = L"SELECT name,age,will FROM demo1";......recset.GetFieldValue(L"name",item1);
recset.GetFieldValue(L"age",item2);
recset.GetFieldValue(L"grade",item3);
recset.GetFieldValue(L"will",item4);

sql语句,与下面直接对应的获取数据语句不匹配,失败: 参数不足,期待是1。

所以,最好的是直接 :"SELECT * FROM demo"; 即使下面并不获取全部列,也没有关系。避免出错。

坑-No.3

CString sFilename = L"E:\\prac\\test\\Debug\\test.xls";

文件路劲没写对,导致:找不到对应的demo。或者sql语句中:sql = L"SELECT name,age,will FROM demo1";  这里是demo1而不是demo,造成这种错误。

坑-No.4

字段名或字段索引不正确。这个问题,让我很恼火。

1、如果Excel表格中,键名用了:number,这种关键字,会报错。(我想用来表示学生的学号)

2、如果Excel表格中,键名用了:xuehao,这种拼音,会报错。(中文拼音,不行,有时候,又可以。真是奇怪)

3、sql查询语句与Excel表头不匹配,就是sql有,但Excel里没有,这种情况会报错

4、Excel表头,如果 左上角没有那个英文的单引号,会报错

5、这个情况,让我很恼火

// 方案1,报错
recset.GetFieldValue(L"姓名",item1);
studentInfo.name = item1;
recset.GetFieldValue(L"学号",item2);
studentInfo.number = item2;
recset.GetFieldValue(L"班级",item3);
studentInfo.claz = item3;
recset.GetFieldValue(L"志愿",item4);
studentInfo.willGroup = item4;
recset.GetFieldValue(L"性别",item5);
studentInfo.sex = item5;// 方案2,通过
recset.GetFieldValue(L"姓名",item1);
recset.GetFieldValue(L"学号",item2);
recset.GetFieldValue(L"班级",item3);
recset.GetFieldValue(L"志愿",item4);
recset.GetFieldValue(L"性别",item5);
studentInfo.name = item1;
studentInfo.number = item2;
studentInfo.claz = item3;
studentInfo.willGroup = item4;
studentInfo.sex = item5;

6、Excel表格中,中文字符太长会报错,仅4个汉字,通不过去:

recset.GetFieldValue(L"行政班级",item3);
recset.GetFieldValue(L"最终志愿",item4);

7、中文不需要加 英文单引号。否则,会报错。

sql = L"SELECT 姓名,学号,班级,志愿,性别 FROM [demo$]";    // 正确sql = L"SELECT '姓名','学号','班级','志愿','性别' FROM [demo$]";// 错误

坑-No.5

参数不足,期待是1.

参数不足,期待是3.

参数不足,期待是5.

  

坑-No.6

sql语句中,字段名中间,有英文逗号,不要加空格, 关键字与字段名中间有空格,是英文的。

坑-No.7

当成功的趟过前面的坑,又遇到一个:

// 本来Excel里面,有几百条数据。
// 但是这里读取了4条(读了4个学生的信息)之后,直接MoveNext就到Excel的末尾了,跳出循环。
// 费解!!!

// 本来Excel里面,有几百条数据。
// 但是这里读取了4条之后,直接MoveNext就到Excel的末尾了,跳出循环。
// 费解!!!
while(!recset.IsEOF())
{
...recset.GetFieldValue(L"姓名",item1);recset.GetFieldValue(L"学号",item2);recset.GetFieldValue(L"班级",item3);recset.GetFieldValue(L"性别",item4);studentInfo.name = item1;studentInfo.number = item2;studentInfo.claz = item3;studentInfo.sex = item4;fenban.stuList.push_back(studentInfo);recset.MoveNext();
}
...

https://bbs.csdn.net/topics/90199957  这个2006年的帖子中,遇到的问题,跟我的相同。却没有留下答案。

https://blog.51cto.com/liweibird/274434  这个博客有详细的介绍,还没看明白,先贴这里。

第4行数据读取完之后,就直接跳出了。所以,我怀疑是第4行数据的问题,然后将第4行数据移动到第10行数据。验证结果是:读取到第10行,就直接跳出了。所以,极有可能是第4行数据的问题。

① 将数组串的前面,添加英文单引号,转换为文本格式。并不能解决问题。

②直接用代码生成模板的时候,生成1000行数据,然后将学生的信息共900行 直接复制 值,到对应的表格处。将多余的100行模板数据删除,即仅删除数据,但是会读取到后100行的内容,即使内容为空。 所以得直接选中后100行的行,直接删除行,这样再进行读取,就能正常读取了。

不清楚,插入的模板,为啥不能读取。也不知道内部有什么差异。费解!!

综上所述

有的错误的解释,可能跟图不搭配,有时候a坑中的错图,答案可能在b坑中,这是正常现象。我遇到的,不同地方代码段的错误,会报相同的提示。

MFC读写Excel操作——遇到的问题相关推荐

  1. python读写excel模块pandas_Python3使用pandas模块读写excel操作示例

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. mfc创建excel如何另存为_MFC实现excel的读写操作

    这个是使用ODBC来完成的 第一步:建立基于对话框的MFC工程,命名为MfctoExc: 第二步:添加两个头文件到stdafx.h, #include #include 第三步:添加两个按钮控件和一个 ...

  3. VS2010 MFC通过OLE方式读写Excel文件(实例+工程文件)

    最近一个同学说是要做一个报账的软件,总体上要实现的功能就是读写Excel文件,于是自己就开始在网上找读写Excel的方法,首先看到了C/C++读写Excel的几种方法,说是读写的方法有很多,但是反正就 ...

  4. MFC Office读写Excel文件,插入图片

    简述 在 Java 中对 Excel 操作很方便,但是在 C++ 中对 Excel 操作却不是那么方便了,C++ 中有几种方法可以对 Excel 操作,但是大部分方法要么是读写较慢,要么是操作的功能不 ...

  5. python处理excel教程实例-python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  6. 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  7. python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用

    最近在做一些数据处理和计算的工作,因为数据是以.CSV格式保存的,因此刚开始直接用Excel来处理. 但是做着做着发现重复的劳动,其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书 ...

  8. python读取python源代码文件_python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  9. Perl读写Excel简单操作

    Perl读写Excel简单操作 使用模块 Spreadsheet::ParseExcel Spreadsheet::WriteExcel 读Excel #!/usr/bin/perl -wuse st ...

最新文章

  1. 【工业控制】OmniCal软件安装和使用详解
  2. python 字典操作
  3. 使用DNS 轻松获取主机信息
  4. python语法31[with来自动释放对象]
  5. elk-可视化图标(nginx)
  6. 520 简单表白代码(JS)
  7. Html5带来了什么?
  8. Linux将数据从小存储通过FTP发送到大存储中
  9. Acer 4750 安装黑苹果_黑苹果 Mac OS 10.14.5 Mojave 安装
  10. lambda java 排序_Java8 用Lambda表达式给List集合排序的实现
  11. 天猫行业资深店长认证
  12. 数据库SQL语句总结大全
  13. swift实现单例的四种方式
  14. 解决Qt5.7.0 cannot find -lGL
  15. 完美破解下载神器IDM
  16. 设计师们如何高调拒绝免费工作
  17. 【天光学术】音乐论文:合唱音响融合度中音准和音色修正训练的作用(节选)
  18. 网络工程——软科中国大学专业排名
  19. 微积分中,区间再现公式的证明
  20. 对马尔可夫链(Markov Chain, MC)的学习

热门文章

  1. 循环出来的文字添加顿号 ‘、’,最后一个不用加
  2. 项目成本管理的重要性:为了削减成本,马斯克裁员50%
  3. 当男人爱上女人——学会诱导需求
  4. ActiveX控件和自定义控件组开发(2)
  5. java理发店系统源码免费_基于jsp的理发店会员-JavaEE实现理发店会员 - java项目源码...
  6. mysql数据库减肥_让MySQL数据库跑的更快为数据减肥_MySQL
  7. python发微博头条文章,用 Python 自动发微博
  8. 记账一段时间后,如何查看上个月的收支明细
  9. 我的世界怎么联机显示服务器,我的世界怎么联机 局域网联机及服务器教程
  10. 神龙服务器和功夫熊猫什么关系?