一、环境的部署和编程遇到问题的解决
1.建立界面最好用copy控件的方式,使得界面美观更快捷。Add classes微软的库,COM技术。#import将一些dll,exe导入,去掉一些不必要的信息。
2.工程或类或变量的命名违法问题,例如 对于2G基础全网,l例如:
声明:typedef struct 2GBasicRecord{
...
}
为什么报错,是因为变量名前面不能用数字开始。
8.不同的结构体set之间的关键字比较,可以用:
ARecord a;BRecord b;
a.keyWord=b.keyWord;
用二维数组导入到内存中,结构体set边加载边分别求交集。
因采用哈希表的形式也要遍历基础上插入,哈希表也不易于实现。故采用set集合的形式放到内
存中,set集合相互间的Find,只要给结构体的一个比较关键字的成员赋值即可。
优化的措施:
1.set集合边加载边求交集。
2.求完交集丢掉数据,以降低内存消耗。//欠缺
3.语句中的优化,多使用if else if else if,但是有些逻辑还是用if if 好处理。
4.字符集编码的转换,Unicode,导致界面不美观,声明的Excel表用VT_VARIANT,然后其它字符可以直接转换为_variant_(str);_variant_(num);提高效率。货币形式的字符自动省略的问题,因为Excel自动匹配,用get_Range,然后ran.put_NumberFormatLocal(_variant_t("@"));
5.用二维数组读取,OleSaveArray的形式来处理,可以批量的读取和批量的写入,这样的速度更快。
备注:
不应该出现的问题:
1.线程的控制,在写入Excel表时用了多线程,但是一个进程中用线程级别去连接Excel进程是不合理的,导致不成功。
2.处理打开的文件是在同一路经删除,不同路径下添加后缀的逻辑,不应该用if else if而是用if if形式。犯了个愚蠢的小逻辑错误。
3.进度条的控制,控制变量跨文件,用extenal不成功,可以用app的方式,外部结构体的方式。调节进度条时调试到了值,就不应该整个代码的架构。已花掉了一个晚上的时间,而且没有备份,幸好有一个最新版本,记得大整改时一定要备份。
1.建立界面最好用copy控件的方式,使得界面美观更快捷。Add classes微软的库,COM技术。#import将一些dll,exe导入,去掉一些不必要的信息。
2.工程或类或变量的命名违法问题,例如 对于2G基础全网,l例如:
声明:typedef struct 2GBasicRecord{
...
}
为什么报错,是因为变量名前面不能用数字开始。
3.不是代码导致的问题,就是工程配置环境导致的问题。我的CString报错,AfxMessageBox报错,因为配置环境的general的字符编码改为multiple bytes格式后就可以了。
4.打开对话框,指定路径下生成.xls文件用OLE尝试无法解决,改用ODBC来指定filepath创建文件。但ODBC插入Excel表是会导致'号,其实用range对象来设置Excel单元格格式也是可以将插入的数字转化为文本的。
5.声明一个app workboos,m_workbook ,多个workbook之间切换赋值给m_workbook实现对不同的Excel表的操作。
6.由加载的知道Excel的列数,自己写了个转换函数来知道列名。
8.不同的结构体set之间的关键字比较,可以用:
ARecord a;BRecord b;
a.keyWord=b.keyWord;
set<ARecord>::iterator aIt=m_aRecord.Find(a);//可以再a中查找到对应的b是否存在。
9.CListBox滚动条的智能化,要添加一段代码才能解决。
10.存在的单个读取Excel单元格和n!求集合的交集导致效率极低?
二、更高效的读取Excel数据技术解决方案用二维数组导入到内存中,结构体set边加载边分别求交集。
因采用哈希表的形式也要遍历基础上插入,哈希表也不易于实现。故采用set集合的形式放到内
存中,set集合相互间的Find,只要给结构体的一个比较关键字的成员赋值即可。
优化的措施:
1.set集合边加载边求交集。
2.求完交集丢掉数据,以降低内存消耗。//欠缺
3.语句中的优化,多使用if else if else if,但是有些逻辑还是用if if 好处理。
4.字符集编码的转换,Unicode,导致界面不美观,声明的Excel表用VT_VARIANT,然后其它字符可以直接转换为_variant_(str);_variant_(num);提高效率。货币形式的字符自动省略的问题,因为Excel自动匹配,用get_Range,然后ran.put_NumberFormatLocal(_variant_t("@"));
5.用二维数组读取,OleSaveArray的形式来处理,可以批量的读取和批量的写入,这样的速度更快。
备注:
不应该出现的问题:
1.线程的控制,在写入Excel表时用了多线程,但是一个进程中用线程级别去连接Excel进程是不合理的,导致不成功。
2.处理打开的文件是在同一路经删除,不同路径下添加后缀的逻辑,不应该用if else if而是用if if形式。犯了个愚蠢的小逻辑错误。
3.进度条的控制,控制变量跨文件,用extenal不成功,可以用app的方式,外部结构体的方式。调节进度条时调试到了值,就不应该整个代码的架构。已花掉了一个晚上的时间,而且没有备份,幸好有一个最新版本,记得大整改时一定要备份。