python excel使用进阶篇

来源:互联网 发布:百度人工智能负责人 编辑:程序博客网 时间:2024/06/05 08:54

需求:定期的统计一些内容,将这些内容写入到excel中,要求:excel以当天日期为名,sheet页以当前时间为名


本文的思路如下:

1.首先检查excel 是否存在

2.如果不存在, 就创建excel,然后写入数据

3.如果存在,先打开,然后复制一份,再追加一个sheet页,写入新的数据。


思路来源: 使用xlwt,xlrd 这两个模块来读写excel,但是这两个模块一个是负责写的,一个是负责读的,并不能同时读写,因此如果有表格存在,就先以读的形式打开,然后复制以为,重新写入,再追加新的数据


代码如下:

#coding:utf-8 import time,osimport xlrd import xlwtfrom xlutils.copy import copyimport sysreload(sys)  sys.setdefaultencoding('utf-8')  #计算时间函数,作为装饰器存在def print_run_time(func):      def wrapper(*args, **kw):          local_time = time.time()          func(*args, **kw)         print 'current Function [%s] run time is %.2f' % (func.__name__ ,time.time() - local_time)      return wrapper @print_run_timedef create_excel(data):excle_file_name=str(time.strftime('%Y-%m-%d')+'.xls')#以当天日期创建excel表#判断一个文件是否存在def file_is_exist(file_name):path = os.path.join(os.getcwd()+'/'+file_name)print 'current file [%s] path is [%s]' % (file_name,path)is_exists = os.path.exists(path)return is_exists#读取复制一份,并且增加一张新表def read_and_copy_excle(excle_file_name):read_excel_flag=xlrd.open_workbook(excle_file_name,formatting_info=True)#保存原有格式count = len(read_excel_flag.sheets()) #sheet数量for r in read_excel_flag.sheets():print r.name #sheet名称worksheet_copy=copy(read_excel_flag)#复制一份excelwrite_excel(worksheet_copy,excle_file_name)#之后再次插入一份#写exceldef write_excel(excel_flag,excle_file_name):sheet_name=str(time.strftime('%Y-%m-%d_%H-%M-%S'))sheet_flag = excel_flag.add_sheet(sheet_name,cell_overwrite_ok=True) #创建sheetfirst_line=[u'编号',u'标题',u'阅读次数',u'评论次数',u'文章地址']#定义字体式样 style = xlwt.easyxf('font:height 240, color-index red, bold on;align: wrap on, vert centre, horiz center');#生成第一行for i in range(0,len(first_line)):sheet_flag.write(0,i,first_line[i],style)sheet_flag.col(i).width=256*15#设置单元格宽度#这里的数据处理的是测试数据,处理自己的数据需要重写这几行代码,但是思路是一样的row_index=1for data_detail in data:cols_index =0sheet_flag.write(row_index,cols_index,data_detail,set_style('Arial',300,False))#sheet_flag.col(cols_index).width=sheet_flag.col(cols_index+1).widthcols_index +=1row_index +=1excel_flag.save(excle_file_name) #保存文件#定义单元格字体式样, 其实这种方法不是特别好用def set_style(name,height,bold):style = xlwt.XFStyle() # 初始化样式font = xlwt.Font() # 为样式创建字体font.name = name # 'Times New Roman'font.bold = boldfont.color_index = 4font.height = height borders= xlwt.Borders()borders.left= 6borders.right= 6borders.top= 6borders.bottom= 6style.font = fontstyle.borders = bordersreturn style#文件存在就复制一份,并在其表的后面插入一个,不存在就新创建一个if file_is_exist(excle_file_name):print 'file 【%s】 exist ' % excle_file_nameread_and_copy_excle(excle_file_name)#复制一个excle并追加一个sheet页else:print 'file 【%s】is not  exist, will create it ' % excle_file_nameexcel_flag=xlwt.Workbook()#新建excel工作薄write_excel(excel_flag,excle_file_name)if  __name__ == '__main__':print '''***************************************** **    Welcome to Spider of excel       ** **      Created on 2017-05-05          ** **      @author: Jimy _Fengqi          ** *****************************************'''test_data=[j for j in range(0,200,2)]#这里仅仅用一些测试数据create_excel(test_data)


1 0