【背景】:

[01:感叹]

我真怕使用MFC或者Qt操作作Excel! 我真的太怕使用MFC或者Qt操作作Excel! 我真的太太怕使用MFC或者Qt操作作Excel! 现在还心有余悸!怕呀,怕呀,怕呀!

[02:怕的场景]

特别是不什么操作Excel,平时偶尔操作时也看一下网上的,看懂算法与操作后,cp后略修改,然后了事,了...事。从来没觉得使用Q T竟然让我觉得是可怕的事过,相反都不把它放在心上过,可是,需求人员提出要给写将某某一堆结果,什么数据呀,什么二进制图片,什么本地图片呀,都 弄到Excel中,好吧,没什么了不起的要求,很和蔼的请求,咱能拒绝?这么和蔼的需求都拒绝,你还敢出来混,公司HR早找你去聊天了,算了,扯多了!之后,该总之,嗯!总之,不能,也无法拒绝!好了,下面是问题的现象,真是让人后怕的现象,看了,现在还真里后怕,因为它们让我卡了一周呀,我去TMD一周呀(非精口话不可了),一直卡着,一面做别的事,一面每天抽出一两个小时来调试,想想,反正像恶梦似的。可能太怕了,话都乱糟糟说了一堆,抱歉,见谅则个!(卡一周的原因:自己掉以轻心了,其次,对Excel了解不多,然后就是网上的资料太少,或者太浅,当然,我也不能说得多深,才用那么一会,能有多深呀)

[03:问题现象]

[03-1:问题现象一] Cells 的错误

(1)ERROR:

QAxBase: Error calling IDispatch member Cells: Exception thrown by server

Code : -2146827284

Source :

Description:

Help :

Connect to the exception(int,QString,QString,QString) signal to catch this exception

(2) 源码接口:(在类中很友好的加工,也真没有问题)

bool FaceAlgorithmCompTool::setCellData(QAxObject* pSheet, int row, int column, QString value)
{
    try{   if(m_pExcel && pSheet) //QAxObject *m_pExcel;    //本例中,excel设定为Excel文件的操作对象
        {

//m_pExcel在类的构造函数已经初始化了(new),并配置好了。这个如果看的朋友要你有一定的基础,反正一点不了解看不懂的
            QAxObject* pCell = pSheet->querySubObject("Cells(int,int)",row,column);
            if(pCell)
            {
                pCell->setProperty("Value2", value);
            }else{
               qDebug()<<"setCellData:"<<"pCell指针异常";
                return false;
            }
            //qDebug()<< getCurDate() <<" - 写入单元格的信息:"<<pCell->property("Value").toString();
        }else{
            qDebug()<<"m_pExcel && pSheet:"<<"指针异常";
            return false;
        }
    }catch(...){
         ui->txtEtLog->append(getCurDate()+": 数据写入Excel单元格失败!");
        return false;
    }
    return true;
}

(3) 问题分析:

1)上面代码真没有任务问题,由于报了”Error calling IDispatch member Cells: Exception thrown by server“我还在try中多添加了检测,其实完全不用,但你用,也没事,更全面更精准的定位。这个不多说了。

2) 上面的问题在于,我传入的row = 0;我太了解excel,一般程序员数组或者什么的,都喜欢从0开始,而且pSheet->querySubObject("Cells(int,int)",row,column)中,我给row传0,是int,没问题呀。还有,就是如果你的代码很大,

你在类初始化就是定义了m_iRow,喜欢将其初始化为0,然后在写更多行时,m_iRow++;的往下用。汗,哪想到,

excel最小的的row=1,最小的纵列column = 1; 当上面报错这个时,我一开始觉得是不是我Excel不注册好,反正网上一堆人,说没注册好序列好,但我们公司都买好了。好吧,但我还是怀疑,汗,我什么了?也许我反正检测代码,发现上面的自己的源码接口,确实没有任务问题。重装呀,反正各种注册(公司都买相关的正版了,并注册好了,我还个种瞎搞,汗),不过,有对很准确的东西敢怀疑的精神还是不错的,就是太TDM浪费时间了,哈哈!

3)处理方法:

分析已经说明了,处理方法,就是在类构造函数中(或者在你最初初始化)excel的行(row)及列(column)的地方,将row与column重新初始化,按你的情况初始化,反正row最小不能小于1,column最小不能小于1。如果你的row=1有标题,那么row初始化则是2,列也这样的道理。

[03-2:问题现象二] AddPicture 的错误

1)ERROR

QAxBase: Error calling IDispatch member AddPicture: Exception thrown by server

Code : -2146827284

Source :

Description: ????????

Help :

Connect to the exception(int,QString,QString,QString) signal to catch this exception

2)源码

不在多说,给出关键的部分:

"AddPicture(QString&, bool, bool, double, double, double, double)"

3)分析上面的源码:

"AddPicture(QString&, bool, bool, double, double, double, double)"中,QString&是图片的路径+图片名如:D:/PIC/1.jpg

当你通过,UI上的PushButton Open图片路径+图片名时(假如为:qsPathPicName="D:/PIC/1.jpg",当然不是直接这样给的,通过:QFileDialog::getOpenFileName或者类似的拿到),然后将AddPicture(qsPathPicName,...)。好吧,恭喜你,肯定分出现上面的的Error现象的。

4)解决的办法

上面的AddPicture(qsPathPicName,...)中的qsPathPicName一定要使用类似这样的D:\\PIC\\1.jpg才不会出问题。

[03-3:问题现象三] Excel其他Error

从上面的问题中抽象的去分析类似的问题,再遇到其他 问题的做法:

1)了解excel基本信息,比如写时,列、行的最小不能小于1,等等类似的关于excel基础信息;

2)对于QT/MFC/Python/java等,操作excel的接口时,每一个参数都仔细的引入,因为在你习惯中某个参数这样用没问题,但是在但却报错,那时你一般不会去检测你习惯性让为是这样的用的参数。所以,清楚每个参数,并严格按接口的规定使用,而不是你习惯性为主导下使用这些接口。这也是程序员的基本素质,严谨性,代码一致性。

3)怕呀!怕呀!怕呀!好吧,怕那就多对面它呗,怕有什么了不起的,咱们还在,就奋斗着!

4)没得说了,那就再见吧!有用的话别谢我,没有用的话捶我吧!

Qt5操作Excel操作的一些心得相关推荐

  1. 中考计算机考试exce,中考信息技术EXCEL操作.doc

    中考信息技术EXCEL操作 EXCEL操作 合并单元格 第一种办法: 选中需要合并的几个单元格 选择工具栏中的图标: 第二种办法: 选中需要合并的几个单元格 选择:格式 单元格 跳出如图所示 设置对齐 ...

  2. pandas 玩转 Excel 操作总结

    Python 操作Excel操作总结,包括Series和Data Frame的互转.使用pandas读取Excel表格.python读取多个数据表.python合并多个工作表以及写入Excel文件 p ...

  3. python与excel做数据可视化-Python的Excel操作及数据可视化

    Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...

  4. java excel生成_java操作excel表,包括创建、读取、以及修改【via 度娘】

    作者的网站上对它的特征有如下描述: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体.数字.日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说 ...

  5. Qt Xlsx使用教程、Qt操作Excel、Qt生成Excel图表、跨平台不依赖Office

    文章目录 1.Qt Xlsx库简介 2. 用法①:使用Xlsx作为Qt5的附加模块 2.1 构建模块 2.2 下载QtXlsx源代码 2.3 为编译器安装Xlsx模块 2.3.1 打开 MinGW 7 ...

  6. JXL(JXLS)的使用:java中操作Excel的解决方案之一。

    摘要: 本文讲述的是如何使用开源项目JXSL来对Excel及其内部的数据进行操作,本人整理汇总自网络. JXLS项目主页: http://sourceforge.net/projects/jxls/ ...

  7. java导入导出excel操作(jxl)

    java导入导出excel操作(jxl) Java解释Excel数据(jxl.jar包的使用) 关键字: java excel jxl.jar jxl.jar 包 下载地址: http://www.a ...

  8. python编程和excel_python编程之赋值和拷贝的区别概述及操作excel数据库(图)

    python编程之赋值和拷贝的区别概述及操作excel数据库(图) 一.赋值 在Python中,对象的赋值就是简单的对象引用,这点和C++不同,如下所示: a = [1,2,"hello&q ...

  9. python excel操作单元格_python 操作excel表格的方法

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. ...

最新文章

  1. Vue学习笔记第一天--es6
  2. hdu 1754 I Hate It(线段树之 单点更新+区间最值)
  3. PHP反序列化漏洞总结
  4. Hark的数据结构与算法练习之简单选择排序
  5. python多个函数_什么是在Python中使用多个构造函数的干净的、pythonic的方法?
  6. [css] css3的:nth-child和:nth-of-type的区别是什么?
  7. c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法
  8. Django的模型类Meta
  9. mysql start
  10. 深交所与6家股交中心深化区块链合作
  11. 在ECSHOP后台左侧导航中增加新菜单
  12. oracle大数据量迁移,分批量导入样例(fetch...bulk collect)以及forall结合使用
  13. Unicode 子集 数量统计
  14. 使用 Python 进行数据清洗的完整指南
  15. 树状图 - Dendrogram
  16. 里氏转换,arraylist,path,file
  17. Oracle实现US7ASCII到ZHS16GBK数据迁移正常显示中文
  18. 智慧数字经营有什么作用
  19. 《Java核心技术》学习笔记——第8章 泛型程序设计
  20. 思考题:一条信息可通过如图所示的网络线由上(A点)往下向各站点传送,例如信息到达b2点可由经a1的站点送达,也可以由经a2的站点送达,共有两条途径传送,那么信息由A点到达d3的不同途径共有多少条

热门文章

  1. 浅谈yolov4中的一部分数据增强
  2. HTML5与CSS3学习笔记【第八章 操作样式表】
  3. 感谢中本聪!也感谢扎克伯格!
  4. 打印论文是单面还是双面?
  5. 利用计算机技术全面规划供应,英语翻译《物流术语》国家标准对供应链管理的定义:利用计算机网络技术全面规划供应链中的商流、物流、信息流、资金流等,并进行...
  6. 清华大学2020年“姚班”“智班”报考指南及选拔方案发布!
  7. 【信息安全服务】使用Hashcat工具对shadow文件进行弱口令检查
  8. python调用 微信,向好友发送微博热搜榜
  9. CodeForces1144 C - Two Shuffled Sequences
  10. 【BZOJ4316】小C的独立集