使用python对excel进行读写操作以及高亮单元格


目前我有一个excel表格,总共有两列若干行,我需要将两列中内容不一样的行进行高亮。
经过资料查询发现pandas只能提供excel的数据读取操作而无法将例如高亮等格式写入到excel中,因此我选择使用xlwt包进行excel文件的写入操作

数据读取:

#读取数据
filePath="./test.xlsx"
data=pd.read_excel(filePath,header=None)
""" print(data) """
dataValue=data.values
""" print(dataValue) """
rowNum=len(dataValue)

header默认是第一行,如果文件没有表头就写None
pd直接读出来的是DataFrame格式的,使用data.values将数据取出来变成二维数组
在这里插入图片描述
这是我的excel文件内容:
在这里插入图片描述
data.values读出来就变成二维数组了:
在这里插入图片描述

内容高亮

OK,到现在我已经读出来了数据内容了,接下来就是如何进行高亮了
之前我们说到pandas无法进行excel内容的写入,于是数据写入(我将结果写到了一个新的Excel中)与样式设置使用xlwt库

#设置样式
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5 		 # 5 背景颜色为黄色
style = xlwt.XFStyle()
style.pattern = pattern

pattern_fore_colour不同值表示的颜色:

#1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan,
 16 = Maroon,17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 
 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray

创建sheet页并进行内容写入

创建sheet页

#创建一个sheet
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1') #创建一个sheet

#判断同行元素是否相等,并插入值到新的sheet中
for i in range(rowNum):
    if dataValue[i][0]!=dataValue[i][1]:
        sheet.write(i,0,dataValue[i][0],style) #顺序为 row, column, value, style
        sheet.write(i,1,dataValue[i][1],style)
    else:
        sheet.write(i,0,dataValue[i][0])
        sheet.write(i,1,dataValue[i][1])

sheet.write()函数调用格式如下:
单元格行坐标,列坐标,单元格Value,样式

文件保存

book.save("./result.xls")

后记

在进行excel操作的时候注意要使用xlwt创建一个新的book进行sheet的写入,不能使用xlrd(excel数据读取的一个包)将sheet读出后直接写,这样是写不成功的

完整代码如下:

from email import header
import pandas as pd
import xlrd
import xlwt

#读取数据
filePath="./test.xlsx"
data=pd.read_excel(filePath,header=None)
print(type(data))
dataValue=data.values
print(dataValue)
rowNum=len(dataValue)

#设置样式
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5 		 # 5 背景颜色为黄色
style = xlwt.XFStyle()
style.pattern = pattern

#创建一个sheet
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1') #创建一个sheet

#判断同行元素是否相等,并插入值到新的sheet中
for i in range(rowNum):
    if dataValue[i][0]!=dataValue[i][1]:
        sheet.write(i,0,dataValue[i][0],style)
        sheet.write(i,1,dataValue[i][1],style)
    else:
        sheet.write(i,0,dataValue[i][0])
        sheet.write(i,1,dataValue[i][1])

book.save("./result.xls")
a=input("处理完成,输入任意键退出")

最后结果展示:
在这里插入图片描述
已经将不同内容的单元格进行了高亮显示

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值