论坛帮助 |
社区圈子 |
日历事件 |
2016-02-12, 15:20 | 只看该作者 #53 | ||
|
|||
见习版主
等级: 五袋长老
|
引用:
我没用过bartender,但它连接Excel的方式大概可以猜想出来,无非是ODBC或者oledb,那么就需要AccessDatabaseEngine这样的数据库驱动,那么就会牵涉到x86和x64的版本问题。 但和OS无关,因为64位OS可以用32位的ODBC驱动,而是和Office版本有关,例如装的是64位Office就应该用64位驱动,装32位Office就应该用32位驱动。 需要指出的是,Office最好不要用64位,这个也是微软的官方建议,至于为什么我就不多说了,详见MSDN上的FAQ。对于经常需要用Office来处理一些其他工作的,最好还是用32位,为了使用bartender而去安装Office 64位可能会得不偿失。 所以建议是能装32位的bartender就装32位,一般情况下64位OS运行32位软件是没问题的(我没装过,只是根据自己的开发经验来推断),如果只能装64位,建议用csv或者txt来连接,尽量不要试图用64位Office来代替32位Office。 将xlsx作为数据库连接还有一点很不好的是,某些情况下,可能得不到正确的结果,excel的单元格可以设置自定义格式,所以可以有两种取值,一种是数据值Value,一种是字面值就是你打开Excel所见即所得的文本Text,例如你在Excel中看到的是7.56,实际Value是7.5632,你在Excel中看到¥188,实际Value是188。当你作为数据库连接的时候,你得到的是内部的Value,但绝大多数时候,我们希望得到的是所见即所得的Text,同样,这也是把xlsx作为xml解析时遇到的最大问题。 作为数据库连接和直接解析适用于没装Office但又非得读取excel的情况下,因为Office也是很贵的,但在国内就不存在这个问题,与其折腾半天去安装数据库驱动,还得冒着数据错误的风险,还不如直接存CSV,这个CSV是泛指,Excel另存csv默认是ansi编码的,中文系统就是存的GBK,如果你的数据包含一些其他语言的字母例如俄语阿拉伯语等,可能会变成?号,这种情况下可以使用另一个另存选项就是unicode txt,用的是制表符分隔,一般的软件都会支持逗号分隔的csv,但支不支持制表符分隔的txt就不得而知了,但也有反过来的,例如Amazon批量上传商品就要求用制表符分隔的txt。 |
||
右列会员因为此帖价值甚高向 pandada 表示感谢: |
sk8820 (2016-02-12)
|
2016-02-12, 16:52 | 只看该作者 #54 | ||
|
|||
正式会员
等级: 一袋长老
|
引用:
谢谢你的解说,嗯,Office我之前安装的也是32位的。这个bartender在连接xlsx出错时,连接txt、accdb都没问题的。那个xlsx总是被bartender提示:是不能识别的格式。 |
||