目前我有一个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)
deader默认是第一行,如果文件没有表头就写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
style = xlwt.XFStyle()
style.pattern = pattern
pattern_fore_colour不同值表示的颜色:
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页
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')
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])
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
style = xlwt.XFStyle()
style.pattern = pattern
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')
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("处理完成,输入任意键退出")
最后结果展示: 已经将不同内容的单元格进行了高亮显示
|