python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:
ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
import xlrd from xlrd import xldate_as_tuple wb = xlrd.open_workbook('data31.xlsx') sh = wb.sheet_by_name('sheet1') for i in range(1, 7): stra_case = sh.cell(i, 1).value index = sh.cell(i, 2).value uiappid = int(sh.cell(i, 3).value) ctype = sh.cell(i, 4).ctype value = sh.cell(i, 4).value a = [] a.append((value, type(value))) print('表格类型:%s' % ctype) print('值和类型%s' % a)
输出结果:
所以要根据类型,做不同的处理:
import datetime
cell = sheet.cell_value(i, j)
if ctype == 2 and cell % 1 == 0: # 如果是整形 cell = int(cell)
if ctype == 3: da = xlrd.xldate_as_tuple(sh.cell_value(i, 4), wb.datemode) #单元格内容为时间类型转化成元组,wb.datemode一般为0(初始日期为19000101),1是19040101初始日期 da1 = datetime.datetime(*da) #时间具体到时分秒用datetime方法,只到年月日用date方法 strda = da1.strftime('%Y%m%d-%H%M%S') #时间格式转化str,可设置格式打印输出 tomorrow = da1 + datetime.timedelta(day=1,seconds=30) #如果输出下一天并加30秒 d = tomorrow.strftime('%Y%m%d-%H%M%S')
备注:
datetime.date.today() #今天日期,只到日 datetime.datetime.now() #现在时间,到秒