当前位置: 首页 > 面试题库 >

如何使用xlrd.xldate_as_tuple()

东郭阳德
2023-03-14
问题内容

我不太确定如何使用以下功能:

xlrd.xldate_as_tuple

对于以下数据

xldate:39274.0
xldate:39839.0

有人可以给我一个数据使用功能的例子吗?


问题答案:

答曰文档:

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 datetime
import 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中有一个,并且确实有一个日期数字,并且您对上述精度不太挑剔,则此代码应该可以工作。



 类似资料:
  • 如何使用

  • 将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄. from bs4 import BeautifulSoup soup = BeautifulSoup(open("index.html")) soup = BeautifulSoup("<html>data</html>") 首先,文档被转换成Unicode,并且HTML的实例

  • 基础运用 Redis::set('user:profile:' . $id, "Swoft"); $userDesc = Redis::get('user:profile:' . $id); 你可以通过 Redis:: 调用任何 Redis 命令。Swoft 使用魔术方法将命令传递给 Redis 服务端,因此只需传递 Redis 命令所需的参数即可。示例: Redis::set('name',

  • 引入 WeUI.css文件 利用 vue init mpvue/mpvue-quickstart my-project 初始化一个 mpvue 项目,然后在 /src/main.js 中引入 weui.css 由于是在小程序中使用,于是就直接使用了 weiui-wxss 中的样式文件,官方提供的是 weui.wxss,因此手动转成了 weui.css,然后引入即可。 这里提供 weui.css 一

  • 将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄. from bs4 import BeautifulSoup soup = BeautifulSoup(open("index.html")) soup = BeautifulSoup("<html>data</html>") 首先,文档被转换成Unicode,并且HTML的实例

  • 目录 简介 定义资源 主流框架的默认适配 抛出异常的方式定义资源 返回布尔值方式定义资源 注解方式定义资源 异步调用支持 规则的种类 流量控制规则 熔断降级规则 系统保护规则 访问控制规则 热点规则 查询修改规则 定制规则推送方式 其它 API 业务异常统计 Tracer 上下文工具类 ContextUtil 指标统计配置 规则生效的效果 判断限流降级异常 Dashboard 实时监控 简介 Se