excel 数据读取,数据遍历,获取日期数据和合并单元格数据
2018-11-14 14:14
155 查看
版权声明:原创博客,不得用于商业用途 https://blog.csdn.net/qq_43471020/article/details/84063887
需求:现有一个excel表格,读取date列的内容和合并单元格的内容
Sheet1页的数据内容如下:
代码如下:
import xlrd import collections import json import operator from ctypes import * from datetime import date,datetime excel_file = xlrd.open_workbook('C:\\Users\\belle.zhao\\Desktop\\test.xlsx','rb') # 打开excel文件 print(excel_file.sheet_names()) # 获取Excel的sheet表 sheet = excel_file.sheet_by_name('Sheet1') # 选择sheet页sheet1 sheet1 = excel_file.sheet_by_index(1) #选择第2个sheet页的表 title = sheet.row_values(0) #获取sheet页的标题 ncols = sheet.ncols # 获取sheet1 页的列数 nrows = sheet.nrows # 获取sheet1页的行数 data_list = [] for i in range(1,nrows): data_values = collections.OrderedDict() row_value = sheet.row_values(i) for j in range(0,len(row_value)-1): data_values[title[j]] = row_value[j] print([title[j]],row_value[j]) data_list.append(data_values) row_result = json.dumps(data_list) print("len(row_value)-1列的所有行的值是:", row_result) cell_value=sheet.cell_value(1,1) # 获取第2行第2列的值 cell_value2=sheet.cell(1,1) # 获取第2行第2列的数据类型和值 cell_value3=sheet.row(1)[1] # 获取第2行第2列的值 print("cell_value的值是:", cell_value) print("cell_value2的值是:",cell_value2) print("cell_value3的值是:",cell_value3) # 读取excel中日期类型的数据 # 将第4行第4列的数据转化为日期格式: cell_value_type=sheet.cell_type(3,3) # 获取第4行第4列的数据类型,表格中是日期类型 if cell_value_type == 3: date_value = xlrd.xldate_as_tuple(sheet.cell_value(3,3), excel_file.datemode) date_tmp = date(*date_value[:3]).strftime('%Y/%m/%d') print("date_value的值是",date_tmp) # 第4列的日期数据转化为日期格式输出: col_date=[] for m in range(1,nrows): col_date_value = xlrd.xldate_as_tuple(sheet.cell_value(m,3), excel_file.datemode) col_date.append(col_date_value[0:3]) # 获取日期列的内容,不要时分秒 print("日期列的内容是:", col_date) # 利用datetime获取datetime对象类型 col_datetime = [] for n in range(1, nrows): col_date_value2 = xlrd.xldate_as_datetime(sheet.cell(n,3).value, 0) col_datetime.append(col_date_value2) # 获取日期列的内容,格式为datetime类型 print("日期列的内容col_datetime是:", col_datetime) # 将datetime 对象类型转化为元组 col_datetime2 = [] for a in range(1, nrows): col_date_value3 = xlrd.xldate_as_datetime(sheet.cell_value(a,3), 0) col_datetime2.append(col_date_value3.__str__()) # 获取日期列的内容,日期格式转化为元组 print("日期列的内容col_datetime2是:", col_datetime2) # 将元组转化为字符串 # 读取合并单元格的数据 print("当前sheet页的合并单元格有:", sheet.merged_cells) print("第3行第5列合并的单元格的数据是:", sheet.cell_value(3,5)) merge_cell = [] for (rlow,rhigh,clow,chigh) in sheet.merged_cells: merge_cell.append([rlow,clow]) print("获取合并单元格的起始行和起始列:", merge_cell) print("获取合并单元格的数据类型:", type(merge_cell)) for index in merge_cell: print("获取合并单元格的值:", sheet.cell_value(index[0],index[1])) # 第0个索引得到的值做为行,第2个索引得到的值做为列,并进行遍历
部分运行结果如下:
日期列的内容是: [(2018, 10, 5), (2018, 10, 5), (2018, 9, 5), (2018, 10, 5), (2018, 9, 5), (2018, 10, 5), (2018, 10, 5), (2018, 9, 5), (2018, 11, 5), (2018, 9, 5), (2018, 9, 5), (2018, 7, 5), (2018, 9, 5), (2018, 9, 5), (2018, 10, 5), (2018, 10, 6), (2018, 9, 5), (2018, 11, 5), (2018, 11, 5), (2018, 11, 5), (2018, 9, 5), (2018, 11, 5), (2018, 11, 5), (2018, 7, 5), (2018, 9, 5), (2018, 7, 5)] 日期列的内容col_datetime是: [datetime.datetime(2018, 10, 5, 0, 0), datetime.datetime(2018, 10, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 10, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 10, 5, 0, 0), datetime.datetime(2018, 10, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 11, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 7, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 10, 5, 0, 0), datetime.datetime(2018, 10, 6, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 11, 5, 0, 0), datetime.datetime(2018, 11, 5, 0, 0), datetime.datetime(2018, 11, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 11, 5, 0, 0), datetime.datetime(2018, 11, 5, 0, 0), datetime.datetime(2018, 7, 5, 0, 0), datetime.datetime(2018, 9, 5, 0, 0), datetime.datetime(2018, 7, 5, 0, 0)] 日期列的内容col_datetime2是: ['2018-10-05 00:00:00', '2018-10-05 00:00:00', '2018-09-05 00:00:00', '2018-10-05 00:00:00', '2018-09-05 00:00:00', '2018-10-05 00:00:00', '2018-10-05 00:00:00', '2018-09-05 00:00:00', '2018-11-05 00:00:00', '2018-09-05 00:00:00', '2018-09-05 00:00:00', '2018-07-05 00:00:00', '2018-09-05 00:00:00', '2018-09-05 00:00:00', '2018-10-05 00:00:00', '2018-10-06 00:00:00', '2018-09-05 00:00:00', '2018-11-05 00:00:00', '2018-11-05 00:00:00', '2018-11-05 00:00:00', '2018-09-05 00:00:00', '2018-11-05 00:00:00', '2018-11-05 00:00:00', '2018-07-05 00:00:00', '2018-09-05 00:00:00', '2018-07-05 00:00:00'] 当前sheet页的合并单元格有: [(3, 6, 5, 6), (9, 11, 2, 3), (1, 4, 4, 5)] 第3行第5列合并的单元格的数据是: female 获取合并单元格的起始行和起始列: [[3, 5], [9, 2], [1, 4]] 获取合并单元格的数据类型: <class 'list'> 获取合并单元格的值: female 获取合并单元格的值: 3000.0 获取合并单元格的值: 24.0
相关文章推荐
- C# 读取excel日期时获取到数字转换成日期
- 判断用npoi 读取 excel 文件中的数据类型是日期OR数字
- php读取excel日期类型数据的例子
- python使用xlrd读取excel数据时,整数和日期变小数的解决办法
- 用xlrd读取excel的日期数据
- C# 读取Excel数据 并对日期是数字的进行处理
- python读取外部数据之excel数据获取及参数说明
- java poi读取excel日期格式数据
- 在java中导入excel表格读取Excel数据的日期格式
- php excel 读取日期问题 在 php excel 读取 xls 格式的文件时,xls 上面显示的是正常的日期格式 但是读取出来的话,就会是一个万位整形数据,这显然不是我们想要的日
- POI读取Excel数据日期时间输出
- java 读取Excel 日期 不能得到原始数据 例如:42522 实际应是2016年06月
- Excel 读取数据,日期读取
- Java 读取Excel表格数据日期类型转换
- java读取excel文件获取数据
- 在 .net 中读取Excel文件中的日期数据
- 从Excel中读取数据时获取的数据为空的原因及解决方案
- poi读取excel,获取全部数据.
- Java+Poi 读取Excel做数据导入时获取cell值的方法
- python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。