首页 > 编程语言 >调用Python的openpyxl包对Excel表格进行美化

调用Python的openpyxl包对Excel表格进行美化

时间:2023-10-18 11:24:00浏览次数:34  
标签:sheet openpyxl Python excel self Excel column row name

Python中运用openpyxl包对Excel表格进行美化,包括字体样式调整、单元格对齐方式调整、单元格边框调整、单元格背景颜色调整、行高和列宽调整。




使用的Python中openpyxl包的版本为3.0.5

先看实际美化前后的效果对比

image-20211027111105037

详细的开发代码如下,代码当中对关键信息进行了说明。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# =====================================================================
# @Author : Shuxian.Qu
# @Email : [email protected]
# @File : beautiful_excel.py
# @CreateTime : 2021-10-26 10:13
# @Software : PyCharm
# @Comment : 美化Excel
# =====================================================================


from openpyxl import load_workbook, utils
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment


class BeautifulExcel:
def __init__(self, path, sheet_name):
self.path = path
self.sheet_name = sheet_name
self.excel_df = load_workbook(path)

def insert_row(self):
"""
在Excel中插入指定行
"""
self.excel_df[self.sheet_name].insert_rows(1)

def insert_value(self, row, start_row, end_row, value):
"""
在Excel的插入指定行中插入指定值

:param row: 行号
:param start_row: 开始插入行单元格的坐标
:param end_row: 结束插入行单元格的坐标
:param value: 插入的值
:return:
"""
# 指定位置插入指定值
for i in range(int(start_row), int(end_row)+1):
self.excel_df[self.sheet_name].cell(row=int(row), column=i).value = value

def merge_cells(self, start_row, start_column, end_row, end_column):
"""
合并单元格

:param start_row: 合并单元格起始行号
:param start_column: 合并单元格起始行号中的起始列号
:param end_row: 合并单元格结束行号
:param end_column: 合并单元格结束行号的结束列号
:return:
"""
self.excel_df[self.sheet_name].merge_cells(start_row=start_row, start_column=start_column, end_row=end_row, end_column=end_column)

def _styles(self):
# 获取表格有多少行?多少列?
rows, columns = self.excel_df[self.sheet_name].max_row, self.excel_df[self.sheet_name].max_column

# 定义字体样式
fonts = Font(name='微软雅黑', size=12, color='000000')

# 定义单元格对齐方式
alignments = Alignment(horizontal='center', vertical='center')

# 定义单元格边框颜色
sides = Side(border_style='thin', color='797979')
borders = Border(left=sides, right=sides, top=sides, bottom=sides)

# 定义单元格背景颜色
fills = PatternFill("solid", fgColor="FFBB02")

# 定义行高和列宽
heights, widths = 15, 20

for i in range(1, int(rows)+1):
for r in range(1, int(columns)+1):
self.excel_df[self.sheet_name].cell(row=i, column=r).font = fonts
self.excel_df[self.sheet_name].cell(row=i, column=r).alignment = alignments
self.excel_df[self.sheet_name].cell(row=i, column=r).border = borders
self.excel_df[self.sheet_name].cell(row=i, column=r).fill = fills

for h in range(1, int(rows)+1):
self.excel_df[self.sheet_name].row_dimensions[h].height = heights
for w in range(1, int(columns)+1):
self.excel_df[self.sheet_name].column_dimensions[utils.get_column_letter(w)].width = widths

def save(self):
self._styles()
self.excel_df.save(self.path)


be = BeautifulExcel(path='/Users/qushuxian/Downloads/test.xlsx', sheet_name='Sheet1')
be.insert_row()
be.insert_value(row=1, start_row=1, end_row=4, value='每日销售额统计')
be.merge_cells(1, 1, 1, 4)
be.save()

标签:sheet,openpyxl,Python,excel,self,Excel,column,row,name
From: https://www.cnblogs.com/weifeng1463/p/17771633.html

相关文章

  • 软件测试|深入理解Python的encode()和decode()方法
    简介在Python中,字符串是不可变的序列对象,它由Unicode字符组成。当我们需要在字符串和字节之间进行转换时,Python提供了两个非常重要的方法:encode()和decode()。这两个方法允许我们在Unicode字符和字节之间进行相互转换,以便在处理文本和二进制数据时更加灵活。在本文中,我们将深入......
  • 软件测试|Python字符串拼接详细解析
    简介在Python编程中,字符串拼接是一个非常常见的操作,它允许我们将多个字符串连接成一个新的字符串。字符串拼接在处理文本和数据时非常有用,比如构建消息、生成文件路径、格式化输出等。在本文中,我们将深入探讨Python中字符串拼接的不同方法和技巧。方法一:连续书写拼接在Python......
  • python 处理异步物化视图同时执行导致内存溢出问题
    python处理异步物化视图同时执行导致内存溢出问题一、前提:因为物化视图过多,同时物化视图到时间同时爆发,导致CPU爆满,所以采用datax自带的调度服务来执行python命令二、直接看代码:importpymysqlimportpymssqlimportdatetimeimporttimeclassMaterialized_plan:d......
  • python 操作向量数据库qdrant
    qdrant官网:https://qdrant.tech/documentation/overview/两个步骤:1、文本进行向量化2、连接qdrant进行存储步骤一:文本向量化文本向量化可以借助很多现有模型,个人使用bge-large-zhfromsentence_transformersimportSentenceTransformer#模型已下载到本地MODELBGE=Sen......
  • 【Python入门教程】CV2报错:cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-p
    ​     OpenCV作为一个强大计算机视觉库被各个领域广泛应用,今天分享下自己编程遇到的报错信息以及解决办法。1报错信息​[WARN:[email protected]]globalgrfmt_tiff.cpp:716cv::TiffDecoder::readDataOpenCVTIFF:TIFFRGBAImageOK:Sorry,cannothandleimageswith6......
  • 【2023最新教程】超详细!!!Python保姆式安装Python环境配置蓝奏云资源
    目录1Python简介2Python下载2.1Python3.10.11蓝奏云资源安装包3Python安装3.1验证环境是否配置完成4Python环境配置1Python简介python有两个版本,python2.X和python3,我们现在用的全部都是python3版本python的内置库是最厉害,所以python可以在多领域展开,让你用做少的......
  • python 颜色 调色板 RGB 代码 调色板 网站
    #定义可用的颜色#colors=['red','blue','green','yellow','Orchid','purple','cyan','black',#'LightPink','Violet','Indigo','Ligh......
  • Python 密码本和电子钥匙
    二分查找a=[1,3,5,7,9]#序列k=3#目标l=0#开头(注意,是索引号)r=4#结尾(注意,是索引号)whilel+1!=r:#是否只剩一个mid=int((l+r)//2)#中间(注意,是索引号)ifa[mid]<k:#小于目标l=mid#结尾移到中间位置上(往大走)elifa[mid]>k:#大......
  • Python 五级编程题
    python_五级_中国电子学会_2021年_真题_汉诺塔汉诺塔是一道非常经典的题,12月5日悦儿姐在考python五级时又遇见它了,在这里给大家分享一下。题目:设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按......
  • python报错解决-ValueError: Trusted host URL must include a host part: '#!
    删掉#后面的字符参考:pipinstall总是报错:ValueError:TrustedhostURLmustincludeahostpart:‘#‘-CSDN博客......