python openpyxl模块操作excel表格

通过使用Python的openpyxl模块,可以轻松解决对Excel文件的复杂操作,避免手动重复工作。本文介绍了如何利用openpyxl快速解决实际问题,节省大量时间。

在工作中难免会遇到要对excel文件做操作的场景,如果手工做一些重复的操作会特别的麻烦。虽然有时候可以用excel中的公式来解决,但是某些场景是公式不能解决的。

下面是一位朋友工作中遇到的问题,找到我看看能不能用python解决。我给他写了一段程序,很简单的就将他的问题解决掉了,为他节省了1天的工作量。

在写程序之前需要安装openpyxl模块,具体安装可以使用下面的命令:

pip3 install openpyxl

具体的代码如下: 

from openpyxl import load_workbook
import openpyxl

workbook = load_workbook("source.xlsx")

sheet = workbook["Sheet1"]

# 用来拷贝几个案例
def process1(sourceRow, targetRow, targetSheet, number):
    for n in range(number):
        
        # 公共信息的填写
        for i in range(1,11):
            targetSheet.cell(targetRow, i).value = sheet.cell(sourceRow,i).value
        
        # 填写学校内案例编号
        targetSheet.cell(targetRow, 11).value = n+1

        baseCol = 12
        # 两位专家的填写
        targetSheet.cell(targetRow, baseCol).value = sheet.cell(sourceRow, 14).value
        targetSheet.cell(targetRow, baseCol+7).value = sheet.cell(sourceRow, 75).value

        # 评价结论的填写
        for i in range(6):
            targetSheet.cell(targetRow, i+1+baseCol).value = sheet.cell(sourceRow,i+15+6*n).value
            targetSheet.cell(targetRow, i+1+baseCol+7).value = sheet.cell(sourceRow,i+76+6*n).value

        # 判断专家的案例顺序是否匹配
        if targetSheet.cell(targetRow, 1+baseCol+1).value == targetSheet.cell(targetRow, 1+baseCol+7+1).value:
            targetSheet.cell(targetRow, 1+baseCol+7+6).value = "匹配"
        else:
            targetSheet.cell(targetRow, 1+baseCol+7+6).value = "不匹配"

        

        targetRow += 1

    return targetRow

newWb = openpyxl.Workbook()

newSheet = newWb.worksheets[0]

targetRow = 1

# 填写表头
for col in range(1, 11):
    newSheet.cell(targetRow, col).value = sheet.cell(2,col).value

# 填写表头其他信息
newSheet.cell(targetRow, 11).value = "学校内案例编号"
newSheet.cell(targetRow, 12).value = "专家1"
newSheet.cell(targetRow, 13).value = "案例评审表"
newSheet.cell(targetRow, 14).value = "案例名称"
newSheet.cell(targetRow, 15).value = "案例主题"
newSheet.cell(targetRow, 16).value = "若主题选择其他,主题为"
newSheet.cell(targetRow, 17).value = "案例等第"
newSheet.cell(targetRow, 18).value = "案例评价意见"

newSheet.cell(targetRow, 19).value = "专家2"
newSheet.cell(targetRow, 20).value = "案例评审表"
newSheet.cell(targetRow, 21).value = "案例名称"
newSheet.cell(targetRow, 22).value = "案例主题"
newSheet.cell(targetRow, 23).value = "若主题选择其他,主题为"
newSheet.cell(targetRow, 24).value = "案例等第"
newSheet.cell(targetRow, 25).value = "案例评价意见"

targetRow += 1

# 对所有的行进行处理
for row in range(3, sheet.max_row+1):
    targetRow = process1(row, targetRow, newSheet, sheet.cell(row, 4).value)

newWb.save('result.xlsx')

print("######运行成功,请查看result文件#######")

人生苦短,快用python~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值