以此Excel文件为例:
1.python读取Excel文件中的时间
import xlrd
#读取Excel文件
workbook = xlrd.open_workbook('C:/Users/12270/study/data.xlsx')
#读取Excel文件中的第一个工作表
sheet1=workbook.sheet_by_index(0)
#获取总行数
rows = sheet1.nrows
#获取总列数
cols = sheet1.ncols
#获取第2行的值,返回一个列表
row2=sheet1.row_values(1)
#获取第3列的值,返回一个列表
col4=sheet1.col_values(3)
#获取指定单元格内容
cellValue1 = sheet1.cell(1, 3).value #获取第2行第4列的内容
print("第2行第4列的内容为:",cellValue1)
cellValue2 = sheet1.cell_value(1, 2) #获取第2行第3列的内容
cellValue3 = sheet1.row(2)[3] #获取第3行第4列的内容
结果如下:
Excel文件中的第2行第4列的值为日期时间类型,但是实际显示出来的是浮点型的值。
python读取excel中单元格的内容返回的有5种类型分别为:
ctype=0:empty; ctype=1: string; ctype=2: number; ctype=3: date;
ctype=4: boolean; ctype=5: error
从上面我们看到,如果是日期类型,其返回的数据类型值是 3;如果返回的是空值,其数据类型值就是0.
要正确显示日期形式,我们需要使用xlrd中的xldate_as_tuple函数将浮点数转换为日期格式的元组,最后再将该元组数据处理成字符串即可。
xldate_as_tuple 函数中,第一个参数是从excel中读取出来的浮点数;第二个参数有两种取值:0或者1,0是以1900-01-01为基准的日期,而1是1904-01-01为基准的日期。该函数返回的是一个元组,类似:(year, month, day, hour, minute, nearest_second)
正确显示日期时间示例:
import xlrd
from datetime import datetime
from xlrd import xldate_as_tuple
#读取Excel文件
workbook = xlrd.open_workbook('C:/Users/12270/study/data.xlsx')
#读取Excel文件中的第一个工作表
sheet1=workbook.sheet_by_index(0)
#显示日期时间
cellValue1 = sheet1.cell(1, 3).value #获取第2行第4列的内容
cellValue2=xldate_as_tuple(cellValue1,0)
cellValue3=datetime(*cellValue2).strftime('%Y/%m/%d %H:%M:%S')
print("第2行第4列的内容为:",cellValue3)
结果如下:
2.python计算Excel中两个时间的间隔
计算Excel文件中核损花费的时间:
import xlrd
from datetime import datetime
from xlrd import xldate_as_tuple
#读取Excel文件
workbook = xlrd.open_workbook('C:/Users/12270/study/data.xlsx')
#读取Excel文件中的第一个工作表
sheet1=workbook.sheet_by_index(0)
for row in range(1,sheet1.nrows):
#读取Excel表中的时间,并计算时间间隔
stime = datetime(*xldate_as_tuple(sheet1.cell_value(row, 3),0)).strftime('%Y/%m/%d %H:%M:%S')
etime = datetime(*xldate_as_tuple(sheet1.cell_value(row, 4),0)).strftime('%Y/%m/%d %H:%M:%S')
#strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
start = datetime.strptime(stime, '%Y/%m/%d %H:%M:%S')
end = datetime.strptime(etime, '%Y/%m/%d %H:%M:%S')
time=(end - start).total_seconds()/60;#秒数除以60算出花费的分钟数
print("案件%d耗费:%f分钟" %(row,time))
结果为:
原文链接:https://blog.csdn.net/Wing_kin666/article/details/108056138