python读取excel,数字都是浮点型,日期格式是数字的解决办法
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import xlrd
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import traceback
from datetime import datetime
from xlrd import xldate_as_tuple
from collections import OrderedDict
class excelHandle:
def decode(self, filename, sheetname):
try:
filename = filename.decode('utf-8')
sheetname = sheetname.decode('utf-8')
except Exception:
print traceback.print_exc()
return filename, sheetname
def read_excel(self, filename, sheetname):
filename, sheetname = self.decode(filename, sheetname)
rbook = xlrd.open_workbook(filename)
sheet = rbook.sheet_by_name(sheetname)
rows = sheet.nrows
cols = sheet.ncols
all_content = []
for i in range(rows):
row_content = []
for j in range(cols):
ctype = sheet.cell(i, j).ctype # 表格的数据类型
cell = sheet.cell_value(i, j)
if ctype == 2 and cell % 1 == 0: # 如果是整形
cell = int(cell)
if ctype == 2 and cell % 1 != 0: # 如果是浮点型
cell = round(cell,1)
elif ctype == 3:
# 转成datetime对象
date = datetime(*xldate_as_tuple(cell, 0))
# cell = date.strftime('%Y/%d/%m %H:%M:%S')
cell = date.strftime('%Y/%d/%m')
elif ctype == 4:
cell = True if cell == 1 else False
row_content.append(cell)
all_content.append(row_content)
#print '[' + ','.join("'" + str(element) + "'" for element in row_content) + ']'
return all_content
if __name__ == '__main__':
eh = excelHandle()
filename = '单包收入明细_new.xlsx'
sheetname = '工作表1'
all_list_data = eh.read_excel(filename, sheetname)