`
f002489
  • 浏览: 271951 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用xlrd模块时对Excel的日期处理

阅读更多

http://blog.donews.com/limodou/archive/2005/07/08/459100.aspx

 

最近在我正在开发的一个数据维护工具中我经常使用 xlrd 来读取Excel文件,在转换过程中一直也没有遇到什么问题,只不过需要注意,它返回的字符串都是 Unicode 编码。不过今天在使用时发现对于日期类型,在Excel文件中看到的可能是 "2005-7-8" 这样格式,但直接使用 xlrd 来读的话却会变成 38541。很奇怪。仔细查看 Excel 后再经过试验,我明白了 Excel 保存日期其实是使用一个长整数,只不过显示时可以为标准的日期格式。本来我想将日期在 Excel 中直接转为日期格式的字符串,但没整出来,而且我更希望有一种方法可以正确地进行转换。于是我想 xlrd 有没有这样的处理呢?使用 NewEdit 的代码提示功能,查了查 xlrd 模块的属性,没找到。不过看到它有cell_type(i, j)的方法可以返回一个单元格的数据格式。于是我使用这个方法打出日期所在的单元格的格式为:3。然后又比较了 xlrd 中定义的一些常量,最后锁定在了 XL_CELL_DATE上,它的值就是 3。这样到目前为止我已经知道了如何判断一个单元格是否是日期类型,下面就是如何转换了。

我查阅了datetime 模式,在它的date类中查到一个函数叫:

    fromordinal(oridnal)

它的作用是将从公元1年1月1日开始的天数转换为年月日的形式。于是我试了一下:

    >>> import datetime
    >>> datetime.date.fromordinal(38541)
    datetime.date(106, 7, 10)

好象不对呀。于是我反向转转试试:

    >>> datetime.date.toordinal(datetime.date(2005, 7, 8))
    732135

怎么这么大的数。后来我想到可能fromordinal与Excel使用的起始日期可能是不同的。做个减法看一看是哪天。

    >>> datetime.date.fromordinal(732135 – 38541 + 1)
    datetime.date(1899, 12, 31)

原来如此,是 1899/12/31 日,这回我明白了。其实象用过的 Informix 中的日期与 Excel 的方法是一样的,都是从 1899/12/31 开始计算的。那么做个转换函数吧:

    __s_date = datetime.date(1899, 12, 31).toordinal() – 1
    def getdate(date):
        if isinstance(date, float):
            date = int(date)
        d = datetime.date.fromordinal(__s_date + date)
        return d.strftime("%Y-%m-%d")

上述函数就是用来将一个从 1899/12/31 开始计算的天数转成年月日的格式,并且是字符串的形式。其中如果传入的是一个浮点数,先取整再进行转换。

------------------------------------------------------------------------------------------------------------------------------------
3条评论

    上次limodou介绍了之后,我马上就派上用场了,确实速度够快,可惜只能读,不能写。

    xlp223 —— 2005年07月09日 @11:35 am

    还有一个 pyExcelerator 可以写Excel文件。http://sourceforge.net/projects/pyexcelerator/

    limodou —— 2005年07月09日 @5:20 pm

    用xlrd模块读取excel,取出来的都是unicode,所以excel里面的中文汉字只能以unicode 显示,请问应该怎么样做才能以正常的中文显示,代码如下(代码是从xlrd模块的示例程序):

分享到:
评论
1 楼 jianghuren 2011-04-12  
你好,能不能把Python中xlrd模块写的把excel数据导入Mysql的源码贴出来啊,谢谢了!

相关推荐

    python xlrd模块

    此外,xlrd模块还支持对日期、时间戳以及各种数据类型的处理。例如,如果单元格存储的是日期,可以通过`cell_type`属性判断,再用`xlrd.xldate_as_tuple()`转换为元组形式: ```python cell_type = sheet.cell(0, 1...

    pyhton xlrd模块

    Python的xlrd模块是用于读取Excel文件的强大工具,它允许开发者轻松地处理Excel数据,进行各种数据分析和处理任务。xlrd支持多种Excel文件格式,包括老版本的.BIFF(Binary Interchange File Format)和现代的.xlsx...

    Python最新xlrd,xlwt模块

    在处理Excel文件时,Python提供了多个库,其中xlrd和xlwt是两个非常重要的库,专门用于读取和写入Excel文件。这两个库在2015年8月17日前是最新的版本,分别是xlrd-0.9.4和xlwt-1.0.0。 **xlrd模块** xlrd是一个用于...

    python操作Excel的读写--使用xlrd

    #### 一、xlrd模块简介与安装 xlrd 是一个用于读取 Microsoft Excel (XLS) 文件的 Python 库。它能够帮助开发者轻松地处理 Excel 文件中的数据,而无需依赖 Microsoft Office 或其他任何商业库。 **安装方法**: 1...

    python xlrd-master。用于操作excel的第三方库

    1. **日期和时间处理**:`xlrd`可以将Excel中的日期和时间戳转换为Python的datetime对象。 2. **样式和格式**:它允许读取单元格的字体、颜色、对齐方式等格式信息。 3. **公式解析**:`xlrd`可以读取Excel公式的值...

    xlrd-1.2.0完整包.zip

    `xlrd`常与数据分析库如`pandas`结合使用,将Excel数据导入DataFrame进行复杂的数据处理。例如: ```python import pandas as pd import xlrd # 使用xlrd读取Excel文件 data = pd.read_excel('example.xls', ...

    Python使用xlrd模块操作Excel数据导入的方法

    在Python中处理Excel文件时,`xlrd`是一个非常实用的库,它专门用于读取Excel文件。这个库提供了丰富的功能,能够帮助开发者轻松地获取Excel文件中的数据。下面我们将详细探讨如何使用`xlrd`模块进行Excel数据的导入...

    xlrd_pythonsqlite_pythonexcel_

    本项目标题"xlrd_pythonsqlite_pythonexcel_"揭示了使用Python的两个关键库:`xlrd`用于读取Excel文件,`sqlite3`用于与SQLite数据库交互。以下是对这些知识点的详细说明: 1. **xlrd库**: - `xlrd`是Python的一...

    Python中xlrd模块

    在使用xlrd模块时,你需要了解一些基本的数据类型,它们对应Excel单元格中的不同内容: - 0 empty(None):表示空单元格。 - 1 string(text):表示文本字符串。 - 2 number:表示数值。 - 3 date:表示日期。 - ...

    Python2.7表格模块 xlrd-1.1.0与xlwt-1.3.0.

    **xlrd模块:** `xlrd`是Python中用于读取Excel文件的一个库,支持多种Excel文件格式,包括`.xls`和`.xlsx`。在`xlrd-1.1.0`这个版本中,我们可以利用它来执行以下操作: 1. **打开Excel文件**:使用`open_workbook...

    Python中的xlrd模块使用原理解析

    总之,xlrd模块为Python提供了强大的Excel文件读取功能,通过其提供的各种方法,可以轻松地访问和处理Excel文件中的数据。无论是数据的简单读取还是复杂的数据分析,xlrd都能满足需求。结合其他Python库,如pandas,...

    xlrd-0.9.2

    **使用xlrd模块** 的主要功能包括: 1. **打开Excel文件**:xlrd提供了open_workbook()函数,可以打开并加载Excel文件到内存中。例如: ```python import xlrd workbook = xlrd.open_workbook('example.xls') `...

    python操作excel相关模块

    Python在处理Excel文件时,提供了多种模块以满足不同的需求,如读取、写入、编辑等操作。在标题和描述中提到的“win32模块”、“xlrd”和“xlwt”是其中较为常见的三个工具。 首先,我们来看“win32模块”,它实际...

    解决python 读取excel时 日期变成数字并加.0的问题

    虽然本文主要介绍了使用xlrd和datetime模块来处理Excel日期的方法,但是当我们将来转用pandas来操作Excel文件时,也可以借鉴本文的方法来正确处理日期格式。 总之,处理Excel文件中的日期格式是Python编程中常见的...

    xlrd-0.7.2.tar.gz

    例如,你可以使用`xlrd.formatting`模块来解析和显示单元格的样式信息,或者使用`xlrd.xldate_as_tuple()`函数将Excel的日期值转换为Python的日期元组。 除了基本的读取操作,xlrd还可以与其他Python库如pandas结合...

    详解python中xlrd包的安装与处理Excel表格

    - **处理日期时间**:使用`xlrd.xldate_as_tuple(value, datemode)`将Excel中的日期时间转换为Python元组表示 - **处理合并单元格**:通过`sheet.merged_cells`获取合并的单元格范围,再用`sheet.cell_merge_info(r,...

    python2.7模块py2exe-win32com-xlrd亲测可用

    xlrd可以解析Excel工作表中的单元格数据,包括日期、数字、字符串等。`xlrd-0.9.4.tar.gz`是xlrd库的版本0.9.4,是一个源码包,需要先解压并使用Python的setuptools或distutils进行编译和安装。 结合这三个模块,...

    Python对Ecel操作教程.pdf

    1. **xlrd模块**:xlrd模块主要用于读取Excel文件。它可以读取Excel文件中的工作表、单元格数据、样式、公式等信息。例如,你可以使用xlrd打开一个Excel文件,然后逐行或逐列读取数据,对数据进行分析和处理。 2. *...

    python读写2003excel模块

    本篇文章将深入探讨如何使用Python读写2003版Excel模块,并简要介绍读写TXT文件的方法。 首先,我们要关注的是`xlrd`和`xlwt`这两个Python库。`xlrd`用于读取Excel文件,而`xlwt`则用于写入Excel文件,它们都支持...

    Python对Excel操作详解.doc

    在本文档中,我们将重点介绍如何利用Python的xlrd、xlwt和xlutils库以及Tcl的tcom包对Excel进行操作。 1. xlrd、xlwt和xlutils库 - xlrd库用于读取Excel文件。它可以解析XLS格式的Excel文件,并提供数据的高效...

Global site tag (gtag.js) - Google Analytics