当前位置:  开发笔记 > 编程语言 > 正文

如何使用xlrd将Excel文件读入Python?它可以读取更新的Office格式吗?

如何解决《如何使用xlrd将Excel文件读入Python?它可以读取更新的Office格式吗?》经验,为你挑选了1个好方法。

我的问题如下,但对任何有xlrd经验的人都会感兴趣.

我刚刚发现xlrd,它看起来像是完美的解决方案,但我开始时遇到了一些问题.我试图从道琼斯提取的Excel文件中以编程方式提取数据,其中包含道琼斯工业平均指数的当前组成部分(链接:http://www.djindexes.com/mdsidx/?event = showAverages)

当我打开未修改的文件时,我得到一个令人讨厌的BIFF错误(无法识别二进制格式)

但是,您可以在此屏幕截图中看到Excel 2008 for Mac认为它采用'Excel 1997-2004'格式(屏幕截图:http://skitch.com/alok/ssa3/componentreport-dji.xls-properties)

如果我在Excel中手动打开并显式保存为"Excel 1997-2004"格式,则在python usig xlrd中打开,一切都很棒.请记住,Office认为该文件已经采用"Excel 1997-2004"格式.所有文件都是.xls

这是一个复制问题的ipython会话的pastebin:http://pastie.textmate.org/private/jbawdtrvlrruh88mzueqdq

有任何想法:如何欺骗xlrd识别文件,以便我可以提取数据?如何使用python将显式的"另存为"格式自动化为xlrd将接受的格式?B计划?



1> John Machin..:

FWIW,我是xlrd的作者,也是xlwt的维护者(pyExcelerator的一个分支).几点:

    ComponentReport-DJI.xls文件名称错误; 它不是XLS文件,它是一个制表符分隔值文件.用文本编辑器(例如记事本)打开它,你就会明白我的意思.您还可以使用Python查看非常原始的原始字节:

    >>> open('ComponentReport-DJI.xls', 'rb').read(200)
    'COMPANY NAME\tPRIMARY EXCHANGE\tTICKER\tSTYLE\tICB SUBSECTOR\tMARKET CAP RANGE\
    tWEIGHT PCT\tUSD CLOSE\t\r\n3M Co.\tNew York SE\tMMM\tN/A\tDiversified Industria
    ls\tBroad\t5.15676229508\t50.33\t\r\nAlcoa Inc.\tNew York SE\tA'
    

    您可以使用Python的csv模块读取此文件...只需delimiter="\t"在您的调用中使用即可csv.reader().

    xlrd可以读取pyExcelerator可以读取的任何文件,并且可以更好地读取它们 - 日期不会以浮点数形式出现,Excel日期的完整故事在xlrd文档中.

    pyExcelerator是abandonware-xlrd,xlwt还活着.查看http://groups.google.com/group/python-excel

HTH约翰

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有