python读取excel,数字都是浮点型,日期格式是数字的解决办法
来源:互联网 发布:马士兵java基础教程 编辑:程序博客网 时间:2024/05/16 17:27
https://www.cnblogs.com/xxiong1031/p/7069006.html
excel文件内容:
读取excel:
# coding=utf-8import xlrdimport sysreload(sys)sys.setdefaultencoding('utf-8')import tracebackclass 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): cell = sheet.cell_value(i, j) row_content.append(cell) all_content.append(row_content) print '[' + ','.join("'" + str(element) + "'" for element in row_content) + ']' return all_contentif __name__ == '__main__': eh = excelHandle() filename = r'G:\test\ctype.xls' sheetname = 'Sheet1' eh.read_excel(filename, sheetname)
输出:
['整形','175.0']['字符串','最后的骑士']['浮点型','6.23']['日期','42909.6461574']['空值','']['布尔型','1']
可以看到,数字一律按浮点型输出,日期却输出成一串小数?!布尔型输出0或1
代码稍做改动:来看一看表格的数据类型
for i in range(rows): row_content = [] for j in range(cols): ctype = sheet.cell(i, j).ctype #表格的数据类型 print ctype, cell = sheet.cell_value(i, j) row_content.append(cell) all_content.append(row_content) print print '[' + ','.join("'" + str(element) + "'" for element in row_content) + ']'
输出:
1 2['整形','175.0']1 1['字符串','最后的骑士']1 2['浮点型','6.23']1 3['日期','42909.6461574']1 0['空值','']1 4['布尔型','1']
python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:
ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
所以,判断一下ctype,然后再做相应处理就可以了。
最终代码:
# coding=utf-8import xlrdimport sysreload(sys)sys.setdefaultencoding('utf-8')import tracebackfrom datetime import datetimefrom xlrd import xldate_as_tupleclass 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) elif ctype == 3: # 转成datetime对象 date = datetime(*xldate_as_tuple(cell, 0)) cell = date.strftime('%Y/%d/%m %H:%M:%S') 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_contentif __name__ == '__main__': eh = excelHandle() filename = r'G:\test\ctype.xls' sheetname = 'Sheet1' eh.read_excel(filename, sheetname)
输出:
['整形','175']['字符串','最后的骑士']['浮点型','6.23']['日期','2017/23/06 15:30:28']['空值','']['布尔型','True']
阅读全文
0 0
- python读取excel,数字都是浮点型,日期格式是数字的解决办法(转)
- python读取excel,数字都是浮点型,日期格式是数字的解决办法
- python读取excel,数字都是浮点型,日期格式是数字的解决办法
- POI读取excel日期显示为数字的解决办法
- excel 用宏将日期数字类型的列转换为字符文本列 c#导入excel 日期变成数字 怎么办?这是最好的解决办法
- poi解析excel读取日期为数字的问题
- POI读取Excel日期时变为数字
- 浮点数字格式化化
- 判断用npoi 读取 excel 文件中的数据类型是日期OR数字
- Python浮点数字运算
- c++控制输出浮点型格式 小数点后位数或者整个浮点型数字的有效数字
- Excel文件保存再打开,数字格式变为时间格式的解决办法
- Webi-数字,日期格式
- JavaWeb数字日期格式
- 日期与数字格式
- Java读取Excel表格以及读取数字列转为文本的解决办法
- 日期和数字的格式互换
- sql日期格式转换的数字含义
- HTML2游戏——绿林怪盗
- 【软件开发模式】对比(瀑布、迭代、螺旋、敏捷)
- 大数相加*加强版*
- JSF-PrimeFaces实现图片的上传、下载、删除、预览
- 输入时可输入copy,体现出文件的复制
- python读取excel,数字都是浮点型,日期格式是数字的解决办法
- STL3 迭代器
- 谈谈持续集成,持续交付,持续部署之间的区别
- 【数据结构学习】有关B树
- ACM开端 S1000 Calcuate A+B!!!
- 常用正则表达式
- Java 单例模式(入门)
- 小程序的“附近的小程序”是小程序的一个主要流量入口
- Ubuntu16.04 安装微信