由于工作需要,需要在excel和mysql数据库之间互相交换数据,于是在网上搜索了一下用vc如何操作excel,基本上有三种实现方式,一种是利用odbc,一种是使用微软的automation技术,一种就是直接分析excel的格式并进行解析。
在codeproject上找到两个开源的操作类,一个是basicexcel,地址为:http://www.codeproject.com/KB/office/BasicExcel.aspx
一个是CSpreadSheet,地址为:http://www.codeproject.com/KB/database/cspreadsheet.aspx
两个我都使用了一下,最后决定使用basicexcel,下面说说我的感受:
1 CSpreadSheet,采用odbc实现,速度慢,bug多,但是对中文支持比较好,但是有个让我最不能忍受的确定,就是它把所有的数据写入excel中时都当作字符串来实现,这样导致在excel的每个field中的内容前都自动添加一个单引号,原因是excel为了防止自动格式转换,添加一个单引号使得每个数据项都强制转换成字符串类型。最后怎么都去不掉,只好放弃使用。
2 basicexcel,采用com方式实现,访问速度快,api接口也比较简单,可以随意设置excel中field内容的类型,但是对于中文的支持不好,要自己处理汉字编码,支持ansi字符和unicode字符。刚开始的时候写入的汉字都是乱码,后来自己做了字符转换,吧gb2312编码的汉字转变成unicode编码,就可以正常显示了
这两个类在官方网页上都有api使用说明和示例工程,大家一起交流...
由于刚刚使用,感受暂时就这么多了,感觉微软的东西还真是麻烦...