开发一个项目的时候遇到一个问题,项目特别急,也没时间查资料,于是提了个问题,
其实问题的描述还是不够清楚,是创建一个excel,设置m行n列的单元格为实线,每一列单元格分割s个填充颜色, 不够的像下一个单元格取(前提是所有单元格列都已经都已经填充了m//s次)
感谢 广大菜鸟给出的回答,由于我之前给的问题后面改了,但是基础功能还是有了
另外 他也出了一个博客,也是关于excel填充的python绘制表格不同颜色的excel


from openpyxl import Workbook
from openpyxl.styles import PatternFill, Side, Border
# 仿照excel格式
# excel文件路径
file_path = 'C:/Users/Lenovo/Desktop/工作簿2.xlsx'
colors = ['000000', '44546A']
fills = [PatternFill("solid", fgColor=color) for color in colors]
workbook = Workbook()
sheet = workbook.create_sheet("Sheet1", 0)0
rows, cols = 30, 9
colorIndex = 1
block_height, block_width = 5, 1
for i in range(int(rows / block_height)):for j in range(int(cols / block_width)):colorIndex = (colorIndex + 1) % 2for p in range(block_height):row = block_height * i + pfor q in range(block_width):col = j * block_width + qcell = sheet.cell(column=col + 1, row=row + 1)cell.fill = fills[colorIndex]cell.border = Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'),bottom=Side(style='thin'))
workbook.save(file_path)

于是我根据他选中单元格,的关键函数整理重新复写了一个函数
关键函数:

cell = sheet.cell(column=col + 1, row=row + 1)
cell.fill = fills[colorIndex]
cell.border = Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'),bottom=Side(style='thin'))

整理函数如下


def createtabletoimg(rows: int = 18, cols: int = 9, spec: int = 1, colors: list = []):"""传入excel 以spec分割列,填充颜色,不够列数不够厚等所有列均填充完成后再由上到下填充spec个单元格颜色,读取填充好的excel 将其转换为图片:param rows: excel行数:param cols: excel列数:param spec: 每列多少单元格同一颜色:param colors: 填充颜色:return: 写入数据库的image路由地址"""imagepath = None# 创建指定格式excelfrom random import randintfrom openpyxl import Workbookfrom openpyxl.styles import PatternFill, Border, Side# 十六进制颜色取值表hexcolor = [chr(i) for i in range(48, 58)] + [chr(i) for i in range(65, 71)]# 设置excel表格填充颜色if len(colors) > 1:# 传入颜色colors = colorselse:# 未传入颜色,设置100种随机颜色colors = [''.join([hexcolor[randint(0, 15)] for i in range(6)]) for i in range(100)]# 初始化颜色下标colorIndex = 0colorIndexm = 0# 设置余量numbers = 0# 生效颜色fills = [PatternFill("solid", fgColor=color) for color in colors]# 设置存储文件路径file_path = 'test.xlsx'# 初始化Workbookworkbook = Workbook()# 创建新工作表sheet = workbook.create_sheet("Sheet1", 0)# 循环列# excel 行列从1开始算for col in range(1, cols + 1):t = rows - rows % spec# 循环行# excel 行列从1开始算for row in range(1, 1 + t):# 选中行列对象cell = sheet.cell(column=col, row=row)# 填充对象颜色cell.fill = fills[colorIndex]# 设置对象边框cell.border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'),bottom=Side(style='thin'))# 设置颜色下标-满足条件切换颜色if row % spec == 0:colorIndex = (colorIndex + 1) % len(colors)# 剩余部分填充if rows % spec > 0:for row in range(t + 1, rows + 1):# 选中行列对象cell = sheet.cell(column=col, row=row)# 填充对象颜色cell.fill = fills[colorIndexm]# 设置对象边框cell.border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'),bottom=Side(style='thin'))# 计数+1numbers += 1# 设置颜色下标-满足条件切换颜色if numbers % spec == 0:colorIndexm = (colorIndexm + 1) % len(colors)# 存储excelworkbook.save(file_path)# excel创建完成# 读取excel内容转换为图片from PIL import ImageGrabimport xlwings as xw# 使用xlwings的app启动app = xw.App(visible=True, add_book=False)# 打开文件wb = app.books.open(file_path)# 选定sheetsheet = wb.sheets("Sheet1")# 获取有内容的区域all = sheet.used_range# 复制图片区域all.api.CopyPicture()# 粘贴sheet.api.Paste()# 设置文件名img_name = 'data' + ".png"# 当前图片pic = sheet.pictures[0]# 复制图片pic.api.Copy()# 获取剪贴板的图片数据img = ImageGrab.grabclipboard()# 保存图片img.save(img_name)# 删除sheet上的图片pic.delete()# 不保存,直接关闭wb.close()# 退出xlwings的app启动app.quit()#存入数据库......# 图片转换存入数据库完成imagepath = img_namereturn imagepath

函数调用

createtabletoimg(18, 9, 5)

函数效果



python excel 颜色填充 excel样式相关推荐

  1. python画图颜色填充_Python使用Turtle图形函数画图 颜色填充!(学习笔记)

    turtle:海龟先生的意思. Python老是用动物的名字! 首先要引入呀! 不引入当然是不可以用的呀! turtle.forward(100):效果图 鼠标前进100步! 后退的话,鼠标就又回来啦 ...

  2. macbookwps excel颜色填充快捷键_零基础、初学者必须掌握的10个Excel技巧,办公必备...

    在Excel的使用中,应用最为广泛的并不是Excel函数公式,也不是VBA或透视表等高大上的功能,而是一些最为接地气的实用技巧,这些技巧的特点是易学.易操作.但功能强大. 一.Excel技巧:Ctrl ...

  3. python画图颜色填充_python画图的两种方法

    python如何画图?这里给大家介绍两款python绘图的库:turtle和Matplotlib. 相关推荐:<python视频> 1 安装turtle Python2安装命令:pip i ...

  4. python画图颜色填充_【Python】Matplotlib画图(十一)——箱线图

    数据描述 参数介绍 plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, pa ...

  5. python读excel字体颜色_python 设置 excel 单元格颜色填充和字体效果

    原博文 2020-02-29 23:33 − 0.import import openpyxl from openpyxl.styles import colors, fills, Font, Pat ...

  6. python自动化办公(第9课)批量调整Excel中字体、样式

    python自动化办公(第9课)批量调整Excel中字体.样式 - 修改字体样式 Font(name="字体名",size=字体大小,bold=是否加粗,italic=是否斜体,c ...

  7. Python操作高版本Excel文件:颜色、边框、合并单元格

    本文主要颜色Python扩展库openpyxl的一些基本用法,包括创建工作簿.选择活动工作表.写入单元格数据,设置单元格字体颜色.边框样式,合并单元格等等. from random import ra ...

  8. python学习笔记 - 设置Excel单元格样式

    对openpyxl中[工作簿].[工作页].[行 / 列]与[单元格]的概念存在疑惑的可以参考<Excel工作簿.工作页.行列.单元格介绍>. 本文介绍对Excel单元格的样式进行简单调整 ...

  9. excel隔行填充颜色的三种方法

    当excel教程工作薄数据量很多时,我们使用excel隔行填充颜色,可以增强数据的阅读性.对Excel感兴趣的朋友可加Excel学习交流群:284029260 excel隔行填充颜色的方法也很多,本文 ...

  10. easypoi导出excel不设置样式_EasyPOI 导出excel设置边框,背景颜色,字体样式

    EasyPOI 导出excel设置边框,背景颜色,字体样式 EasyPOI 导出代码示例ExportParams exportParams = new ExportParams(); exportPa ...

最新文章

  1. 它来了!ROS2从入门到精通:理论与实战
  2. PHP中array_merge和array相加的区别分析
  3. CUCM号码转换实验
  4. 温度转换的python程序_Python通过小实例入门学习---1.0(温度转换)
  5. Hanlp分词实例:Java实现TFIDF算法
  6. 火爆 GitHub 的 16 张机器学习速查表,值得收藏!
  7. 广度优先遍历算法-03树的右侧问题
  8. 努力做一名认真踏实的工程师
  9. leetcode--983.最低票价
  10. 在 ASP.NET Core 5.0 中访问 HttpContext
  11. Moment.js在Vue中使用
  12. LibreOffice/Calc:带条件判断的求和
  13. oracle中的aix,oracle在AIX下的自启动
  14. Unity如何免费持续获取卫星云图、雷达云图等天气数据图片,制作动态天气应用
  15. C语言应用(2)——判断当前时间是否在一个时间段内(含跨天)
  16. 怎样修改PDF中的文本的字体
  17. linux服务器架设篇 下载_后渗透系列——下载(Windows篇)
  18. linux使用光盘镜像(ISO)作为软件源安装软件
  19. 如何申请屏蔽垃圾短信
  20. win10计算机安全模式怎么,Win10系统怎么快速进入安全模式?

热门文章

  1. golang 微信商户平台支付平台V3
  2. 解决微信商户号无法开通企业付款到零钱
  3. SpringBoot文件上传文件大小限制The field file exceeds its maximum permitted size of 1048576 bytes.
  4. 矩阵快速幂codevs 3332 数列
  5. 【观察】OLED电视,凭什么成为游戏玩家的新宠?
  6. 外贸软件常见图片类问题丨汇信
  7. 9.屏幕宽高比判断(Screen.width,Screen.height)
  8. 【房价预测】BP神经网络回归的现实应用-上海市二手房价格影响因素分析——思路剖析和结果分享
  9. 微信网页开发(1)--微信网页与普通网页区别
  10. 2017年6月14日中午 java.io.IOException: Premature EOF