Python 一大重要的功能,就是可处理大量数据,那分不开的即是使用Excel表格了,这里我做下学习之后的总结,望对我,及广大同仁们是一个帮助
Python处理Excel数据需要用到2个库:xlwt
和xlrd
。xlwt
库负责将数据导入生成Excel表格文件,而xlrd
库则负责将Excel表格中的数据取出来。xlrd
库读取Excel的数据也是轻轻松松,先来看下实现代码
import xlrd, os
wb = xlrd.open_workbook(‘./test.xls‘)
# 获取列表1
sheet1 = wb.sheet_by_index(0)
# 根据循环取数据
for x in range(wb.nsheets):
p = wb.sheets()[x].name.encode(‘utf-8‘)
print("Sheets Number(%s): %s" % (x, p.decode(‘utf - 8‘)))
# 总行数
total_rows = sheet1.nrows
# 总列数
total_cols = sheet1.ncols
print("行数:%d 列数:%d" % (total_rows, total_cols))
# input the check column
cols_num = int(input(‘要检查哪一列请输入数值(第一列数值为0):‘))
while cols_num + 1 > total_cols:
cols_num = int(input(‘您的号码超出范围,请重新输入:‘))
# 输入搜索字符串和列
txt_text = input(‘匹配字符串:‘)
# 找到 列 并保存到txt
txt_filename = txt_text + ‘.txt‘
file_handle = open(txt_filename, ‘w‘)
# find the rows which you want to select and write to a txt file
# 我的表格是从第10行才有的正经数据,所以从第10行开始
for i in range(10, total_rows):
# 取出第i行 第 cols_num 列的数据
cell_value = sheet1.cell_value(i, cols_num)
# 如果用户输入的字符串在这个单元格数据里包含 则提出该行数据
if txt_text in str(cell_value):
outputs = sheet1.row_values(i)
for j in outputs:
file_handle.write(‘%s ‘ % (j))
file_handle.write(‘%s‘ % (os.linesep))
file_handle.close()
总结一下,分为一下几步:
xlrd
库的open_workbook
方法打开Excel文件(我这里的test.xls,是已存在数据的excel表格)sheet_by_index
方法获取表cell_value
方法获取每个单元格中的数据,匹配到我手写的字符串,如符合,则取出该行所有数据,再次循环该行数据,将其写入到记事本中 os.linesep 每行数据写入后,换行写入# 通过索引
sheet1 = wb.sheets()[0]
sheet1 = wb.sheet_by_index(0)
# 通过名字
sheet1 = wb.sheet_by_name(‘test‘)
# 获取所有表名sheet_names = wb.sheet_names()
# 获取行中所有数据,返回结果是一个列表
tabs = sheet1.row_values(rowx=0, start_colx=0, end_colx=None)
# 返回一行一共有多少数据
len_value = sheet1.row_len(rowx=0)
row_values
的三个参数分别是:行号、开始的列和结束的列,其中结束的列为None
表示获取从开始列到最后的所有数据
类似的还有获取某一列的数据
cols = sheet1.col_values(colx=0, start_rowx=0, end_rowx=None)
时间数据比较特殊,没发直接通过上面的cell_value
方法获取。需要先转换为时间戳,然后再格式化成我们想要的格式。
比如要获取Excel表格中,格式为2019/8/13 20:46:35
的时间数据
# 获取时间 time_value = sheet1.cell_value(3, 0) # 获取时间戳 time_stamp = int(xlrd.xldate.xldate_as_datetime(time_value, 0).timestamp()) print(time_stamp) # 格式化日期 time_rel = time.strftime("%Y/%m/%d", time.localtime(time_stamp)) print(time_rel)
基本也是三步走:
cell_value
方法获取时间值xldate_as_datetime
方法获取时间戳
将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件
原文:https://www.cnblogs.com/Ares-zjs/p/11469024.html