日常中,Excel是比较常用的,用python处理大量Excel文件是一个比较合适方式。
各种代码之间,有许多相同之处,码代码的逻辑是相同的。在最近的操作中,感觉就像做一道数学题,一步一步的解答。
input_file=sys.argv[1]
output_file = sys.argv[2] #这两段是用来在Windows的命令行调动python程序
#eg:python abc.py xxx.xlsx mm.xls,其中abc.py是保存的代码文件
#xxx.xlsx是input_file(也可以用文件夹路径,表示输入文件是多个文件)
#mm.xls是输出文件,.xls是Excel通用格式(03,07,10,13版)
output_workbook=Workbook()#利用xlwt Workbook实例化对象,使我们可以向输出文件写入内容
output_worksheet=output_workbook.add_sheet('Jan-2013')# add_sheet,增加工作表
pattern = re.compile(r'(?P<my_pattern>^J.*)') #re.compile 创建正则公式,r''表示原始字符串,
#my_pattern 可以作为^J的索引,^J表示以J开头的字符串,.*表示J后面可以是认出除换行符的字符
with open_workbook(input_file) as workbook: #workbook=open_workbook(input_file)
利用re正则函数索引
if pattern.search(worksheet.cell_value(row_index,column_index)) 利用re模块的search函数搜索固定的列,可以利用row_index或者column_index为固定值索引特定的行或者列。
在Excel中,cell_type==3,表示该cell的type为日期
date_cell = xldate_as_tuple(cell_value,workbook.datemode) #from xlrd import xldate_as_tuple,xldate_as_tuple可以将excel中日期转化成元组,datemode是将日期基于19000101开始计算
date_cell = date(*date_cell[0:3]).strftime('%m%d%Y') #利用元组索引引用date_cell的[0:3],年月日,然后传递给date函数,利用strftime将date 对象转化为%m%d%Y
for list_index,ouput_list in enumerate(data): #data为最后结果的列表
for element_index,element in enumerate(ouput_list) #enumerate是一个可以遍历对象的函数,将遍历的数据组合成一个索引序列,同时给出下标,例如第一个for对data列表进行迭代,ouput_list里面也是一个列表,然后第二个for对ouput_list列表再次迭代
output_worksheet.write(list_index,element_index,element) #将2次迭代的索引写入sheet中,第一个是行值,第二个是列值,第三个是cell_value
如果不对最后结果的列表进行enumerate函数遍历,会导致空行,enumerate将原数据去除空值。