Python Excel操作 xlwt xlrd xlutils三个模块的使用,不删除表,往后累加数据

目录

主要代码

其他类引用代码


Python对Excel表格进行操作(不删除表,往后累加数据)

用时需改变五个参数和自己重新定义AddData方法

        self.tableName='设置速度报文测试'#表名
        self.FileName='./SocketLog.xlsx'#文件路径+文件名
        self.col=('次数','发送时间','接收时间','耗时','备注')#列名
        self.colNum=5#列数
        self.colWidth = 9000#列宽度

有做了两个异常处理

        异常一:FileNotFoundError

                没有文件时自动创建

        异常二:ValueError

                没有表时自动添加表

主要代码

import xlwt
import xlrd
import xlutils.copy
from pickle import TRUE
from tkinter import FALSE

#Excel表格操作(不删除表,往后累加数据)
class XL:
    def __init__(self):
        self.tableName='设置速度报文测试'#表名
        self.FileName='./SocketLog.xlsx'#文件路径+文件名
        self.col=('次数','发送时间','接收时间','耗时','备注')#列名
        self.colNum=5#列数
        self.colWidth = 9000#列宽度

        self.style = xlwt.XFStyle()

        borders = xlwt.Borders()#边框样式  DASHED虚线 NO_LINE没有 THIN实线
        borders.left = xlwt.Borders.THIN
        borders.right = xlwt.Borders.THIN
        borders.top = xlwt.Borders.THIN
        borders.bottom = xlwt.Borders.THIN
        self.style.borders = borders

        alignment = xlwt.Alignment()#内容对齐方式
        alignment.horz = xlwt.Alignment.HORZ_CENTER
        self.style.alignment = alignment
        
        try:
            rd = xlrd.open_workbook(self.FileName, formatting_info = True)   # 打开文件并保留格式
            self.book = xlutils.copy.copy(rd)   # 复制
            self.sheet = self.book.get_sheet(rd.sheet_names().index(self.tableName))   # 读取表名索引对应的工作表
            self.book.save(self.FileName)   # 保存
        except FileNotFoundError as e:
            print('XL Error:' + str(e.args))
            self.CreateXL(TRUE)
            rd = xlrd.open_workbook(self.FileName, formatting_info = True)   # 打开文件并保留格式
        except ValueError as e:
            print('XL Error:' + str(e.args))
            self.CreateXL(FALSE)
        except PermissionError as e:
            print('XL Error:' + str(e.args))
        except Exception as e:
            print('XL Error:' + str(e.args))
        self.row = xlrd.open_workbook(self.FileName, formatting_info = True).sheet_by_name(sheet_name=self.tableName).nrows#当前行数
       
    #创建表(是否重新创建文件)
    def CreateXL(self,isCreate):
        if isCreate:
            self.book = xlwt.Workbook(encoding='utf-8',style_compression=0)
        self.sheet = self.book.add_sheet(self.tableName,cell_overwrite_ok=True)
        for i in range(0,self.colNum):
            self.sheet.col(i).width = self.colWidth
            self.sheet.write(0,i,self.col[i],self.style)
        self.book.save(self.FileName)
        
    # 添加表数据(发送时间,接收时间,耗时,备注)
    def AddData(self,sendTime,receTime,consumeTime,bz):
        self.sheet.write(self.row,0,self.row,self.style)
        self.sheet.write(self.row,1,sendTime,self.style)
        self.sheet.write(self.row,2,receTime,self.style)
        self.sheet.write(self.row,3,consumeTime,self.style)
        self.sheet.write(self.row,4,bz,self.style)
        self.book.save(self.FileName)
        print("写入表格第%d行"%self.row)
        self.row+=1
                

其他类引用代码

from XL import *

    global xl
    xl=XL()

    self.sendTime =  time.time()
    self.receTime =  time.time()

    a="%s.%03d"%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.sendTime)), (self.sendTime - int(self.sendTime)) * 1000)
    b="%s.%03d"%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.receTime)), (self.receTime - int(self.receTime)) * 1000)
    c="%s.%03d"%(time.strftime("%S", time.localtime(self.receTime-self.sendTime)),(self.receTime-self.sendTime)* 1000)
    if self.receTime-self.sendTime>3:
        xl.AddData(a,b,c,"超时")
    else:
        xl.AddData(a,b,c,"超时")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yao2424022071

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值