1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【已解决】python 使用xlrd xlwt 修改execl单元格的背景色

【已解决】python 使用xlrd xlwt 修改execl单元格的背景色

时间:2023-03-27 02:58:35

相关推荐

【已解决】python 使用xlrd xlwt 修改execl单元格的背景色

【已解决】python 使用xlrd,xlwt 修改execl单元格的背景色

【解决过程】

之前查百度,问同事,一直没找到满意的答案,后来找到了几篇不相干的文章,自己整理整理,理解理解,总算是理出了令自己比较满意的答案:

分两种情况:

一、 原execl 表格中的数据不改变,只改变需要改变的单元格的背景

import xlrdfrom xlutils.copy import copyimport xlwt# 第一步 把原表格中的数据拷贝一份path = 'E:\\测试文件\\test.xls'book = xlrd.open_workbook(path)# book = xlrd.open_workbook(path, formatting_info=True)# 设置 formatting_info=True ,当打开表格是保存表格原有的样式,进行保存时,# 原来的样式不会丢失sheet = book.sheets()[0]wb = copy(book)ws = wb.get_sheet(0)# 第二步 设置样式pattern = xlwt.Pattern()pattern.pattern = xlwt.Pattern.SOLID_PATTERNpattern.pattern_fore_colour = 5 # 5 背景颜色为黄色#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 Graystyle = xlwt.XFStyle()style.pattern = pattern# 第三步 写入数据并保存ws.write(1, 1, '苹果', style) # 顺序为 row, column, value, stylews.write(1, 2, '南瓜', style)ws.write(1, 3, '猫头鹰', style)ws.write(2, 2, '', style) # 单元格数据为空,背景为黄色# value会覆盖原单元格的数据,如果不想被覆盖了,需提前把原单元格的数据获取到再写入wb.save(path)# 开始时的样式![原始数据](https://img-/061800041589.PNG)# 运行后的样式![背景色改变](https://img-/0618000519842.PNG)``

二、新建一个工作薄,写入数据后再保存到指定的表格中

如果原表格中有数据,那么数据会丢失

如果是空白表格,则不会影响结果

# 第一步wb = xlwt.Workbook()ws = wb.add_sheet("大千世界") # 大千世界 为sheet名,可自行定义# 第二步,第三步同上# 运行结果![其他数据丢失](https://img-/0618001936853.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzM1NjkwMA==,size_16,color_FFFFFF,t_70)# 其他数据已丢失# 可以通过修改 wb.save(path) 里面的 path 来改变保存的位置,原表格的数据就不会丢失了# sheet 的名称也改过来了![修改了sheet名称](https://img-/0618002444933.PNG)

三、在循环中灵活控制是否添加背景色(隔行变色)

将第二步中的pattern.pattern = xlwt.Pattern.SOLID_PATTERN改为:pattern.pattern = xlwt.Pattern.NO_PATTERN其他地方不变,依然不会添加背景色

四、添加背景色导致单元格边框消失

【解决办法】

方法一、灵活控制是否添加背景色

方法二、添加表格样式

添加表格样式在上述第三步,设置样式的地方添加表格的样式borders = xlwt.Borders() # Create bordersborders.left = xlwt.Borders.MEDIUM # 添加边框-虚线边框borders.right = xlwt.Borders.MEDIUM borders.top = xlwt.Borders.MEDIUM borders.bottom = xlwt.Borders.MEDIUM borders.left_colour = 0x90 # 边框上色borders.right_colour = 0x90borders.top_colour = 0x90borders.bottom_colour = 0x90style = xlwt.XFStyle()# Create stylestyle.borders = borders # Add borders to style

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。