如何使用xlrd.xldate_as_tuple()
我不太确定如何使用以下功能:
xlrd.xldate_as_tuple
对于以下数据
xldate:39274.0xldate:39839.0
有人可以给我一个数据使用功能的例子吗?
回答:
答曰文档:
回答:
实际上,没有这样的事情。您所拥有的是浮点数和虔诚的希望。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 xlrd
book = 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中有一个,并且确实有一个日期数字,并且您对上述精度不太挑剔,则此代码应该可以工作。
以上是 如何使用xlrd.xldate_as_tuple() 的全部内容, 来源链接: utcz.com/qa/408460.html