1.行中的值属于某个特定模式
vi 6excel_value_matches_pattern.py
#encoding=utf8
#!/usr/bin/env python3
import re
import sys
from datetime import date
from xlrd import open_workbook,xldate_as_tuple
from xlwt import Workbook
input_file=sys.argv[1]
output_file=sys.argv[2]
output_workbook=Workbook()
output_worksheet=output_workbook.add_sheet('jan_2013_output')
pattern=re.compile(r'(?P<my_pattern>^J.*)') #以J开头的行。
customer_name_column_index=1
with open_workbook(input_file) as workbook:
worksheet=workbook.sheet_by_name('january_2013')
data=[]
header=worksheet.row_values(0)
data.append(header)
for row_index in range(1,worksheet.nrows):
row_list=[]
if pattern.search(worksheet.cell_value(row_index,customer_name_column_index)):
#[1,1],[2,1],[3,1],[4,1] 如果有J开头的行,每行先循环第一列。
for column_index in range(worksheet.ncols):
cell_value=worksheet.cell_value(row_index,column_index)
cell_type=worksheet.cell_type(row_index,column_index)
if cell_type==3:
date_cell=xldate_as_tuple(cell_value,workbook.datemode)
date_cell=date(*date_cell[0:3]).strftime('%m/%d/%Y')
row_list.append(date_cell)
else:
row_list.append(cell_value)
if row_list:
data.append(row_list)
for list_index,output_list in enumerate(data):
for element_index,element in enumerate(output_list):
output_worksheet.write(list_index,element_index,element)
output_workbook.save(output_file) #保存到输出文件。
#结果
python3 6excel_value_matches_pattern.py sales_2013.xls 16output.xls
more 16output.xls
Customer ID Customer Name Invoice Number Sale Amount Purchase Date
1234 John Smith 100-0002 1200 1/1/2014
5678 Jenny Walters 100-0006 1725 1/24/2014
2.总结
pattern=re.compile(r'(?P<my_pattern>^J.*)') #以J开头的行
worksheet.ncols #sheet对象的列数
worksheet.nrows #sheet对象的行数
worksheet.cell_value #格子的值
worksheet.cell_type #格子值的类型
worksheet.row_values(0) #第一行
workbook.sheet_by_name('january_2013') #根据名称筛选sheet;