openpyxl读取excel文档中记录的日期问题
openpyxl读取excel文档中记录的日期问题里面的数据记录的是生日,显示的是xxxx年xx月xx日wb = load_workbook('shuju.xlsx')
ws = wb.active
shengri = ws['H%d' % i]
shengri1 = shengri.value
print(shengri1)
我发现读取到的是时间戳 42600 之类的
这种情况要怎么读取到正常的时间格式?还是说要怎么转换 # 引入模块
import time, datetime
# 使用time
timeStamp = 1381419600
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2013--10--10 23:40:00
# 使用datetime
timeStamp = 1381419600
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2013--10--10 23:40:00
# 使用datetime,指定utc时间,相差8小时
timeStamp = 1381419600
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2013--10--10 15:40:00 def date(shengri1): #这个有个弊端,输入得时间戳过大后报错,最大支持多少106751
delta = pd.Timedelta(str(shengri1)+'D')
real_time = pd.to_datetime('1899-12-30') + delta
return real_time
real_time = date(shengri1)
print(real_time)
import datetime
def date1(dates):
delta=datetime.timedelta(days=dates)
today=datetime.datetime.strptime('1899-12-30','%Y-%m-%d')+delta
# 将1899-12-30转化为可以计算的时间格式并加上要转化的日期戳
return datetime.datetime.strftime(today,'%Y-%m-%d')#制定输出日期的格式
这是我自己找到的,第一个方法是xxxx-xx-xxx 00:00:00
第二个方法是xxxx-xx-xx后面不带时间 本帖最后由 dleo 于 2021-6-15 22:25 编辑
from xlrd import xldate
xldate.xldate_as_datetime 能读出时间戳
openpyxl 这个不清楚了 openpyxl.utils.datetime module — openpyxl 3.0.7 documentation
https://openpyxl.readthedocs.io/en/stable/api/openpyxl.utils.datetime.html?highlight=datetime#openpyxl.utils.datetime.from_excel
用pandas 不香吗,pd.read_excel(xxx.xlsx,date_parser=xxx) 数据量大吗?不大的话给你支个简单的招。你把日期那一列复制到记事本,插入一列设置为文本格式,再粘贴回来。就可以读取到时间了
好厉害的技术贴 建议直接Xlwings吧,这个读写Excel皆可。
页:
[1]