如何使用xlrd.xldate_as_tuple()

如何使用xlrd.xldate_as_tuple(),第1张

如何使用xlrd.xldate_as_tuple()

答曰文档:

Excel电子表格中的日期

实际上,没有这样的事情。您所拥有的是浮点数和虔诚的希望。Excel日期存在几个问题:

(1)日期不存储为单独的数据类型;它们存储为浮点数,您必须依靠(a)Excel中应用于它们的“数字格式”和/或(b)知道哪些单元格中应该有日期。该模块有助于(a)通过检查已应用于每个数字单元格的格式;如果它似乎是日期格式,则该单元格将分类为日期而不是数字。对于此功能的反馈,尤其是来自非英语地区的反馈,将不胜感激。

(2)Excel for
Windows默认将日期存储为自1899-12-31T00:00:00以来的天数(或其天数)。Macintosh的Excel使用默认的开始日期1904-01-01T00:00:00。可以在Excel中按每个工作簿更改日期系统(例如:工具->选项->计算,在“
1904年日期系统”框上打钩)。如果工作簿中已经有日期,这当然是一个坏主意。即使工作簿中没有日期,也没有充分的理由进行更改。使用哪个日期系统记录在工作簿中。从Windows传输到Macintosh(反之亦然)的工作簿将与宿主Excel一起正常工作。使用此模块的xldate_as_tuple函数转换工作簿中的数字时,必须使用Book对象的datemode属性。

参考:http :
//support.microsoft.com/default.aspx?scid= KB; EN- US;
q180162

(3)基于Windows默认值1900的日期系统的Excel实现在错误的前提下认为1900是a年。它将数字60解释为1900-02-29,这不是有效日期。因此,任何小于61的数字都是模棱两可的。示例:59是直接输入1900-02-28的结果,还是1900-03-01减去2天?OpenOffice.org
Calc程序“纠正”了微软的问题;输入1900-02-27将导致数字59被存储。另存为XLS文件,然后使用Excel打开文件-
您会看到显示1900-02-28。

参考:http :
//support.microsoft.com/default.aspx?scid= kb; zh- CN;
214326

之所以在此引用,是因为除非您将其考虑在内,否则您问题的答案很可能是错误的。

因此,将其放入代码中将类似于:

import datetimeimport xlrdbook = xlrd.open_workbook("myfile.xls")sheet = book.sheet_by_index(0)cell = sheet.cell(5, 19) # type, <class 'xlrd.sheet.Cell'>if sheet.cell(5, 19).ctype == 3: # 3 means 'xldate' , 1 means 'text'    ms_date_number = sheet.cell_value(5, 19) # Correct option 1    ms_date_number = sheet.cell(5, 19).value # Correct option 2    year, month, day, hour, minute, second = xlrd.xldate_as_tuple(ms_date_number,         book.datemode)    py_date = datetime.datetime(year, month, day, hour, minute, nearest_second)

这为您提供了一个Python日期时间

py_date
,您可以在使用标准日期时间模块时进行有用的 *** 作。

我从未使用过xlrd,并且我的示例已完全组成,但是,如果

myfile.xls
在单元格F20中有一个,并且确实有一个日期数字,并且您对上述精度不太挑剔,则此代码应该可以工作。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5653543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存