设置表头单元格的颜色

fill = PatternFill("solid", fgColor='FF000000')
font = Font(color='00FFFFFF')
for index, v in enumerate(header):
d = self.ws.cell(row=1, column=index + 1)
d.value = v
d.fill = fill
d.font = font

设置表头单元格的长度

self.ws.column_dimensions[row[0]].width = row[1]

单元格保存图片

# 获取图片
img = Image(image_path)
# 设置图片宽高
img.width, img.height = 100, 100
# 保存图片
self.ws.add_image(img, f'F{index_row + 2}')
# 设置图片单元格高度;宽度由header设置
self.ws.row_dimensions[index_row + 2].height = 100

封装的脚本代码

from openpyxl.styles import PatternFill, Font
from openpyxl.drawing.image import Image
from openpyxl import Workbook
from typing import List
import os
from core.config import settings
class Excel:
def __init__(self, excel_name):
self.excel_name: str = excel_name
self.excel_path: str = f'{settings.TEMP_FILE}/{self.excel_name}'
self.wb = Workbook()
self.ws = self.wb.active
def write_header(self, header: List[str], column_width: List[list]):
"""
headers: 表头内容
column_dimensions:表头的间隔
"""
# 设置表头样式:黑色填充,白色字体
fill = PatternFill("solid", fgColor='FF000000')
font = Font(color='00FFFFFF')
for index, v in enumerate(header):
d = self.ws.cell(row=1, column=index + 1)
d.value = v
d.fill = fill
d.font = font
# 设置列间隔
for row in column_width:
self.ws.column_dimensions[row[0]].width = row[1]
def write_body(self, rows: List[dict]):
"""
rows: [[1,2,3],[1,2,3]]
"""
for index_row, row in enumerate(rows):
index = 1
for v in row.values():
self.ws.cell(row=index_row + 2, column=index).value = v
index += 1
return self.__save()
def write_body_with_image(self, rows: List[dict]):
"""
rows: [[1,2,3],[1,2,3]],
"""
for index_row, row in enumerate(rows):
index = 1
for v in row.values():
if index == 6:
# 单元格保存图片用add_image
image_path = f'{settings.BASE_PATH}/{v}'
img = Image(image_path)
# 设置宽高
img.width, img.height = 100, 100
self.ws.add_image(img, f'F{index_row + 2}')
# 设置图片单元格高度;宽度由header设置
self.ws.row_dimensions[index_row + 2].height = 100
else:
self.ws.cell(row=index_row + 2, column=index).value = v
index += 1
return self.__save()
def __save(self):
try:
self.wb.save(self.excel_path)
return True
except Exception as e:
print(f'[保存Excel报错] {e}')
return False
# def __del__(self):
# os.remove(self.excel_name)
posted @ 2022-03-30 23:50 SonnyZhang 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 阿里云:域名SSL认证-视频 阅读全文
posted @ 2022-02-28 23:47 SonnyZhang 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 阅读指引 适用人:想要通过国内域名访问页面或者接口,需要进行ICP备案 解决问题:备案过程中发生的问题 阅读耗时:3分钟 参考链接:阿里云ICP流程-视频、备案相关问题、注销备案相关问题 名词解释 阿里云账号所属人(个人/公司):申请的阿里账号实际法人 阿里云账号申请人/负责人:阿里云账号的操作人员 阅读全文
posted @ 2022-02-28 23:43 SonnyZhang 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 引用 parameter和argument的区别 parameter和argument的区别 1. parameter是指函数定义中参数,而argument指的是函数调用时的实际参数。 2. 简略描述为:parameter=形参(formal parameter), argument=实参(actu 阅读全文
posted @ 2022-02-18 18:11 SonnyZhang 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 目的 根据发现的问题,找到原因,然后对症下药 借鉴资料: 没用过慢查询日志,别说自己做过数据库优化 慢查询日志概念 记住七个字搞定索引失效问题 发现问题(主动/被动) 问题点:数据库查询过程中速度过慢的SQL语句 主动:数据库默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的 阅读全文
posted @ 2022-02-18 16:49 SonnyZhang 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 配置文件路径 /etc/my.cnf 阅读全文
posted @ 2022-01-17 17:40 SonnyZhang 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 时间datetime 创建时间不能自动更新,更新时间需要自动更新 CURRENT_TIMESTAMP:创建时,会用当前时间自动填充该字段值 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP:创建和更新时,都会用当前时间自动覆盖该字段值 `createDate 阅读全文
posted @ 2022-01-09 20:55 SonnyZhang 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 数据库设置 查看设置 查看链接超时界限 show global variables like '%timeout'; -- 查看最大传递字节大小1M=1024*1024 show global VARIABLES like '%max_allowed_packet%'; 修改设置 -- 设置最大传递 阅读全文
posted @ 2022-01-09 19:40 SonnyZhang 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 停止MySQL service mysqld status service mysqld stop 卸载已经安装过的MySQL 检查是否已经安装 rpm -qa|grep mysql 卸载 [root@iZwz952850qwxmr1yaiwdxZ jinchu]# for i in $(rpm - 阅读全文
posted @ 2022-01-07 14:09 SonnyZhang 阅读(1428) 评论(0) 推荐(0) 编辑
摘要: html部分 <div class="col-md-6"> <div class="ibox-content"> <div class="m-t login_wrap"> <div class="form-group text-center"> <h2 class="font-bold">登录</h 阅读全文
posted @ 2021-11-29 00:52 SonnyZhang 阅读(305) 评论(0) 推荐(0) 编辑

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示