python excel使用进阶篇

xiaoxiao2021-02-28  104

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

本文的思路如下:

1.首先检查excel 是否存在

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

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

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

代码如下:

#coding:utf-8 import time,os import xlrd import xlwt from xlutils.copy import copy import sys reload(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_time def 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)#复制一份excel write_excel(worksheet_copy,excle_file_name)#之后再次插入一份 #写excel def 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) #创建sheet first_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=1 for data_detail in data: cols_index =0 sheet_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).width cols_index +=1 row_index +=1 excel_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 = bold font.color_index = 4 font.height = height borders= xlwt.Borders() borders.left= 6 borders.right= 6 borders.top= 6 borders.bottom= 6 style.font = font style.borders = borders return style #文件存在就复制一份,并在其表的后面插入一个,不存在就新创建一个 if file_is_exist(excle_file_name): print 'file 【%s】 exist ' % excle_file_name read_and_copy_excle(excle_file_name)#复制一个excle并追加一个sheet页 else: print 'file 【%s】is not exist, will create it ' % excle_file_name excel_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)

转载请注明原文地址: https://www.6miu.com/read-33469.html

最新回复(0)