python openpyxl和xlwings混合使用

openpyxl和xlwings两个模块都是python中使用广泛的excel处理模块,但两者各有利弊,openpyxl读取速度快,但不支持在原有表格上写入内容;xlwings调用速度稍微比较慢,但支持读取和更改原有表格的内容。之前写过关于《Python使用xlwings实现写入Excel》的简单教程Python使用xlwings实现写入Excel》icon-default.png?t=L892https://blog.csdn.net/userak47/article/details/119081169可以实现在指定表格,行,列写入内容

def wrtxl(a,b,c,value):  #写入表格内容(页,行,列,内容)
    # wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
    wb.sheets[a-1][b-1,c-1].value=value
    #print(wb.sheets[0][1,1].value)
    wb.save()

本次对原来的代码进行了一个升级,原本只能输入表格序号和行数、列数来读取或写入内容,现在可以输入表格名(例如“人员名单”)和表格具体位置(例如“A6”)

以下是openpyxl和xlwings混合使用的完整代码

import xlwings as xw
import openpyxl

class xexcel:   #xlwings功能
    global app,wb
    def open(path):
        #初始化写入表格程序
        global app,wb
        app=xw.App(visible=False,add_book=False)
        #visible=True   显示Excel工作簿;False  不显示工作簿
        #add_book=False   不再新建一个工作簿;True  另外再新建一个工作簿
        #app.display_alerts=False
        #app.screen_updating=False
        wb=app.books.open(path)  #写入的表格路径

    #读取表格内容
    def rdvalue(sheet:"可输入表格名或表格序号",address:"可输入行数或者表格位置如:A6",column:"列数"=0):   #读取excel函数(页,行,列)
        if type(sheet)==int:
            if type(address)==int:
                re=wb.sheets[sheet-1][address-1,column-1].value
            else:
                re=wb.sheets[sheet-1][address].value
        else:
            if type(address)==int:
                re=wb.sheets[sheet][address-1,column-1].value
            else:
                re=wb.sheets[sheet][address].value
        return re

    #写入表格内容
    def wtvalue(value:"输入的内容",sheet:"可输入表格名或表格序号",address:"可输入行数或者表格位置如:A6",column:"列数"=0):   #读取excel函数(页,行,列)
        if type(sheet)==int:
            if type(address)==int:
                wb.sheets[sheet-1][address-1,column-1].value=value
            else:
                wb.sheets[sheet-1][address].value=value
        else:
            if type(address)==int:
                wb.sheets[sheet][address-1,column-1].value=value
            else:
                wb.sheets[sheet][address].value=value

    def size(sheet,r,c):
        wb.sheets[sheet][r].row_height=c
        wb.sheets[sheet][r].colum_height=c

    def bgcolor(sheet,r,c):
        wb.sheets[sheet][r].color=c

    def wrtxl(a,b,c,value):  #写入表格内容(页,行,列,内容)
        # wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
        wb.sheets[a-1][b-1,c-1].value=value
        
    #关闭excel和app
    #运行结束务必执行保存和关闭命令
    def close():
        wb.save()
        wb.close()
        app.quit()
    def save():
        wb.save()


class oexcel:
    global workbook
    def open(filename):   #读取Excel
        global workbook
        workbook=openpyxl.load_workbook(filename)
        
    def value(n:"页码或者页名",row:"行",column:"列"):  #读取表格内容('页',行,列) 页可为页名或页码
        if type(n)==int:
            sheetname=workbook.get_sheet_names()[n-1]
            worksheet=workbook.get_sheet_by_name(sheetname)
        else:      
            worksheet=workbook.get_sheet_by_name(n)
        value=worksheet.cell(row,column).value
        return value

    def bgcolor(n:"页码或者页名",row:"行",column:"列"):  #读取表格背景颜色('页',行,列) 页可为页名或页码
        if type(n)==int:
            sheetname=workbook.get_sheet_names()[n-1]
            worksheet=workbook.get_sheet_by_name(sheetname)
        else:      
            worksheet=workbook.get_sheet_by_name(n)
        ce=worksheet.cell(row,column)
        color=ce.fill.start_color.rgb
        return color

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值