安装xlwt和xlutils
xlwt
用来写数据到excel文件 xlutils
复制excel中旧表数据到新表
pip install xlwt
pip install xlutils
实现思路
1. 写入数据的excel文件不存在通过xlwt创建文件和定义excel表名
2. 写入数据的excel文件存在则通过xlrd打开并定位第一个表并获取其数据总行数
3. 通过xlutils.copy的copy方法复制旧数据并重新保存到新表
4. 获取转化后工作簿中的第一个表并追加写入数据
5. 首行空行数据追加后再次定义标题行与其格式
实现方法
#!/usr/bin/python3
# coding=utf-8
# Author: 文
from os.path import join
from time import strftime
import xlrd
import xlwt
from xlutils.copy import copy
excel_path = "G:\\work_script" # 写入的excel文件路径
now_time = strftime("%Y-%m-%d-%H") # 获取时间戳为excel文件名和表名
# 创建excel追加数据到表中
class Write_Excel():
def __init__(self):
self.path = excel_path
self.name = now_time + ".xls"
self.filename = join(self.path, self.name)
# 设置表格样式
def set_style(self, name, height, bold=False):
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = name
font.bold = bold
font.color_index = 4
font.height = height
style.font = font
return style
# 新建excel文件
def new_excel(self):
f = xlwt.Workbook()
f.add_sheet(now_time, cell_overwrite_ok=True) # 新增excel中表now_time
f.save(self.filename)
print("文件【%s】创建成功" % self.name)
# 对excel文件写入数据
def add_to_excel(self, values):
try:
workbook = xlrd.open_workbook(self.filename) # excel文件存在则直接打开
except FileNotFoundError: # excel文件不存在则先创建在打开
self.new_excel()
workbook = xlrd.open_workbook(self.filename)
sheets = workbook.sheet_names() # 获取工作簿中的所有表格
worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
rows_old = worksheet.nrows # 获取表格中已存在的数据的行数
if rows_old == 0: # 跳过首行写入,留存为标题行
rows_old = 1
new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象,旧数据复制保存
new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格
i = 0
for value in values:
new_worksheet.write(rows_old, i, value) # 追加写入数据,从rows_old行开始写入
i += 1
print(" 文件【{0}】表【{1}】第【{2}】行追加数据{3}".format(self.name, now_time, rows_old, values))
# 定义标题行信息
title_row = ["ID", "title", "method", "URL", "payload", "result", "time/s"]
for n in range(0, len(title_row)):
new_worksheet.write(0, n, title_row[n], self.set_style('Times New Roman', 220, True))
new_workbook.save(self.filename) # 保存excel文件
if __name__ == "__main__":
values_1 = [1, "百度搜索", "百度-百度搜索", "https://www.baidu.com", "Selenium", "pass", "4"]
values_2 = [2, "百度搜索", "百度-百度搜索", "https://www.baidu.com", "Python", "error", "5"]
Write_Excel().add_to_excel(values=values_1)
Write_Excel().add_to_excel(values=values_2)
结果预览
提交评论
您尚未登录,登录之后方可评论~ 登录 or 注册