Python读取Excel,里面如果是日期,直接读出来是float类型,无法直接使用。

通过判断读取表格的数据类型ctype,进一步处理。

返回的单元格内容的类型有5种:

ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

ctype =sheet1.cell(iRow,iCol).ctype

参考示例如下:

1.准备一个Excel文件,文件名Book1.xlsx

从第2行的第1列开始向右,分别是2019年的7月的1、2、3、4日,2019-07-01、2019-07-02、2019-07-03、2019-07-04

A列单元格的类型:date

B列单元格的类型:Text

C列单元格的类型:Text

D列单元格的类型:Custom里的一种日期格式

2.Python文件,ReadExcelDemo.py,代码如下:

#! -*- coding utf-8 -*-
#! @Time :2019/7/4 15:46
#! Author :Frank Zhang
#! @File :ReadExcelDemo.py
#!SoftWare PyChart 5.0.3
#! Python Version 3.7
import xlrd
import os
import time
from datetime import datetime
from xlrd import xldate_as_tuple def main():
sPath = os.getcwd()
sFile = "Book1.xlsx"
wb = xlrd.open_workbook(filename=sPath + "\\" + sFile)
sheet1 = wb.sheet_by_index(0)
nrows = sheet1.nrows
ncols = sheet1.ncols for iRow in range(1,nrows):
for iCol in range(ncols):
sCell = sheet1.cell_value(iRow,iCol) #Python读Excel,返回的单元格内容的类型有5种:
#ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
ctype = sheet1.cell(iRow,iCol).ctype #ctype =3,为日期
if ctype == 3:
date = datetime(*xldate_as_tuple(sCell, 0))
cell = date.strftime('%Y-%m-%d') #('%Y/%m/%d %H:%M:%S')
print(cell)
#ctype =1,为字符串
elif ctype == 1:
if isVaildDate(sCell):
t1 = time.strptime(sCell, "%Y-%m-%d")
sDate = changeStrToDate(t1,"yyyy-mm-dd")
print(sDate)
else:
pass def formatDay(sDay,sFormat):
sYear = str(sDay.year)
sMonth = str(sDay.month)
sDay = str(sDay.day) if sFormat == "yyyy-mm-dd":
sFormatDay = sYear +"-" +sMonth.zfill(2)+"-" +sDay.zfill(2)
elif sFormatStyle == "yyyy/mm/dd":
sFormatDay = sYear +"/" +sMonth.zfill(2)+"/" +sDay.zfill(2)
else:
sFormatDay = sYear+"-" + sMonth + "-" + sDay return sFormatDay """
功能:判断是否为日期
"""
def isVaildDate(sDate):
try:
if ":" in sDate:
time.strptime(sDate, "%Y-%m-%d %H:%M:%S")
else:
time.strptime(sDate, "%Y-%m-%d")
return True
except:
return False """
功能:把字符串格式的日期转换为格式化的日期,如把2019-7-1转换为2019-07-01
"""
def changeStrToDate(sDate,sFormat):
sYear = str(sDate.tm_year)
sMonth = str(sDate.tm_mon)
sDay = str(sDate.tm_mday) if sFormat == "yyyy-mm-dd":
sFormatDay = sYear +"-" +sMonth.zfill(2)+"-" +sDay.zfill(2)
elif sFormatStyle == "yyyy/mm/dd":
sFormatDay = sYear +"/" +sMonth.zfill(2)+"/" +sDay.zfill(2)
else:
sFormatDay = sYear+"-" + sMonth + "-" + sDay return sFormatDay if __name__ == "__main__":
main()

3.执行结果:

Python读取Excel,日期列读出来是数字的处理的更多相关文章

  1. python读取excel,数字都是浮点型,日期格式是数字的解决办法

    excel文件内容: 读取excel: # coding=utf-8 import xlrd import sys reload(sys) sys.setdefaultencoding('utf-8' ...

  2. C# 读取Excel日期格式

    读取Excel日期数据,一种方式是在EXCEL中把你的日期列的格式设置一下,设成"文本"型. 如果单元格格式设置为date,则在后台读出的数值是一个数值,如2008-08-08读出 ...

  3. [转] Windows下使用Python读取Excel表格数据

    http://www.python-excel.org/这个网站罗列了很多关于在Python下操作Excel文件的信息,这里选择了其介绍的第一个模块xlrd . xlrd 0.9.2版本跨平台同时支持 ...

  4. Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  5. 记录:python读取excel文件

    由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...

  6. 利用xlrd模块实现Python读取Excel文档

    # -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.x ...

  7. python读取Excel表格文件

    python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...

  8. Python读取Excel表格

    前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...

  9. JXL读取Excel日期时间不准确

    XL读取Excel日期时间多出了8个小时. Cell c = rs.getCell(j, i);                     if (c.getType() == CellType.DAT ...

随机推荐

  1. 腾讯2020校园招聘-后台&综合-第一次笔试 题解

    对数据结构和算法感兴趣的可以关注一下https://github.com/MCQ1999/Datastructure_Algorithm_Solutions,分享算法题的解题思路和代码~ 1.压缩算法 ...

  2. VMware使用与安装

    VMware安装 下载完Vmware -> 双击打开安装包 -> 选择下一步(如下图界面) 选择接受协议,点击下一步 选择经典进行安装.这个是默认安装,会把默认插件安装到相对应的路径 选择 ...

  3. 刷题84. Largest Rectangle in Histogram

    一.题目说明 题目84. Largest Rectangle in Histogram,给定n个非负整数(每个柱子宽度为1)形成柱状图,求该图的最大面积.题目难度是Hard! 二.我的解答 这是一个 ...

  4. 9.16java总结

    枚举   EnunTest.java 运行结果 falsefalsetrueSMALLMEDIUMLARGE 枚举类型可以直接用==来判断是否相等,即代表数据串,又有数的属性.是引用类型. 浮点数计算 ...

  5. LeetCode 面试题18. 删除链表的节点

    题目链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/ 给定单向链表的头指针和一个要删除的节点的值,定义一 ...

  6. Python学习笔记--协程asyncio

    协程的主要功能是单线程并发运行 假设有3个耗时不一样的任务.看看协程的效果. 先来看没有使用协程情况: #!/usr/bin/python3 # -*- coding:utf-8 -*- import ...

  7. c++编程之内存模型

    我们在编程的时候,无可避免要申明变量,在这个变量可以是在()中,可以在{}中,也可以直接在外面,也可以用new的方式.那么当我们在申明变量的时候,实质上我们所做的工作是:关联了一个内存模型! 上代码: ...

  8. gulp常用插件之http-proxy-middleware使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 http-proxy-middleware这是一个用于后台将请求转发给其它服务器.其实这并不是转给gulp使用的,在其它构建工具也可以用. 更多使 ...

  9. 《操作系统真象还原》BIOS

    以下是读本书第二章的收获. 记得我大学学习操作系统的时候会遇到一些奇奇怪怪的问题,因为觉得问题太奇怪了,所以羞于问老师.诸如ROM到底是个什么东西:如果用内存映射的方式访问外部设备,是不是内存条里专门 ...

  10. spark-sklearn TypeError: 'JavaPackage' object is not callable

    from sklearn import svm, datasets from spark_sklearn import GridSearchCV from pyspark import SparkCo ...