1-1
1 import os
2 from openpyxl import load_workbook
3 from openpyxl.styles import PatternFill, Alignment, Side, Border
4
5 # 定义表头颜色样式为橙色
6 header_fill = PatternFill('solid', fgColor='FF7F24')
7 # 定义表中、表尾颜色样式为淡黄色
8 content_fill = PatternFill('solid', fgColor='FFFFE0')
9 # 定义表尾颜色样式为淡桔红色
10 bottom_fill = PatternFill('solid', fgColor='EE9572')
11
12 # 定义对齐样式横向居中、纵向居中
13 align = Alignment(horizontal='center', vertical='center')
14
15 # 定义边样式为细条
16 side = Side('thin')
17 # 定义表头边框样式,有底边和右边
18 header_border = Border(bottom=side, right=side)
19 # 定义表中、表尾边框样式,有左边
20 content_border = Border(left=side)
21
22 # 设置文件夹路径
23 path = './各部门利润表汇总_副本/'
24 # 返回当前目录下所有文件名
25 files = os.listdir(path)
26
27 # 循环文件名列表
28 for file in files:
29 # 拼接文件路径
30 file_path = path + file
31 # 打开工作簿
32 wb = load_workbook(file_path)
33 # 打开工作表
34 ws = wb.active
35
36 # 调整列宽
37 ws.column_dimensions['A'].width = 10
38 ws.column_dimensions['B'].width = 25
39 ws.column_dimensions['C'].width = 50
40 ws.column_dimensions['D'].width = 10
41 ws.column_dimensions['E'].width = 20
42 ws.column_dimensions['F'].width = 15
43
44 # 循环第一行单元格,调整表头样式
45 for cell in ws[1]:
46 # 设置单元格填充颜色
47 cell.fill = header_fill
48 # 设置单元格对齐方式
49 cell.alignment = align
50 # 设置单元格边框
51 cell.border = header_border
52
53 # 获取最后一行行号
54 row_num = ws.max_row
55
56 # 从第二行开始,循环到倒数第二行
57 for row in ws.iter_rows(min_row=2, max_row=(row_num-1)):
58 # 循环取出单元格,调整表中样式
59 for cell in row:
60 cell.fill = content_fill
61 cell.alignment = align
62 cell.border = content_border
63
64 # 循环最后一行单元格,调整表尾样式
65 for cell in ws[row_num]:
66 cell.fill = bottom_fill
67 cell.alignment = align
68 cell.border = content_border
69
70 # 保存
71 wb.save(file_path)

第 22-34 行实现了功能块一——打开工作表。
第 36-42 行实现了功能块二——对工作表列宽的调整。
第 5-20 行实现了功能块三——定义单元格样式。
第 44-68 行实现了功能块四——循环修改单元格。
1-1-1
如何打开活动工作表
1 # 导入openpyxl库中的load_workbook函数
2 from openpyxl import load_workbook
3 # 文件存储路径
4 file_path = './material/事业01部_副本.xlsx'
5 # 打开工作簿
6 wb = load_workbook(file_path)
7 # 打开活动工作表
8 ws = wb.active
1-1-2
如何定位到工作表的某一行
# 导入模块
from openpyxl import load_workbook
# 打开工作表
file_path = './material/事业01部_副本.xlsx'
wb = load_workbook(file_path)
ws = wb.active # 取出工作表第二行所有单元格,打印它们的值
for cell in ws[2]:
print(cell.value)
1-1-3
for循环嵌套的使用,将列表 temp_list 中的数字逐个打印
1 temp_list = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
2 # 先遍历最外层的列表,取出三个元素
3 for item in temp_list:
4 # 再遍历三个列表,取出其中的元素
5 for number in item:
6 print(number)
 1-2
获取所有文件路径
1 # 导入模块
2 import os
3 # 设置文件夹路径
4 path = './各部门利润表汇总/'
5 # 返回当前目录下所有文件名
6 files = os.listdir(path)
7 # 循环文件名列表
8 for file in files:
9 # 拼接文件路径
10 file_path = path + file
11 # 打印文件路径
12 print(file_path)
 1-2-1
第一个功能块——打开工作表
1 # 导入模块
2 import os
3 # 设置文件夹路径
4 path = './各部门利润表汇总/'
5 # 返回当前目录下所有文件名
6 files = os.listdir(path)
7 # 循环文件名列表
8 for file in files:
9 # 拼接文件路径
10 file_path = path + file
11 # 打开工作簿
12 wb = load_workbook(file_path)
13 # 打开工作表
14 ws = wb.active
 1-2-2
功能二“调整列宽”
1 from openpyxl import load_workbook
2
3 # 打开工作表
4 file_path = './material/事业01部_副本.xlsx'
5 wb = load_workbook(file_path)
6 ws = wb.active
7
8 # 调整列宽
9 ws.column_dimensions['A'].width = 20
10
11 # 保存
12 wb.save(file_path)
 1-2-3
功能块三——定义单元格样式
1 import os
2 from openpyxl import load_workbook
3 from openpyxl.styles import PatternFill, Alignment, Side, Border
4
5 # 定义表头颜色样式为橙色
6 header_fill = PatternFill('solid', fgColor='FF7F24')
7 # 定义表中、表尾颜色样式为淡黄色
8 content_fill = PatternFill('solid', fgColor='FFFFE0')
9 # 定义表尾颜色样式为淡桔红色
10 bottom_fill = PatternFill('solid', fgColor='EE9572)
11
12 # 定义对齐样式横向居中、纵向居中
13 align = Alignment(horizontal='center', vertical='center')
14
15 # 定义边样式为细条
16 side = Side('thin')
17 # 定义表头边框样式,有底边和右边
18 header_border = Border(bottom=side, right=side)
19 # 定义表中、表尾边框样式,有左边
20 content_border = Border(left=side)
21
22 # 设置文件夹路径
23 path = './各部门利润表汇总/'
24 # 返回当前目录下所有文件名
25 files = os.listdir(path)
26
27 # 循环文件名列表
28 for file in file
29 # 拼接文件路径
30 file_path = path + file
31 # 打开工作簿
32 wb = load_workbook(file_path)
33 # 打开工作表
34 ws = wb.active
35
36 # 调整
37 ws.column_dimensions['A'].width = 10
38 ws.column_dimensions['B'].width = 25
39 ws.column_dimensions['C'].width = 50
40 ws.column_dimensions['D'].width = 10
41 ws.column_dimensions['E'].width = 20
42 ws.column_dimensions['F'].width = 15
43
44 # 循环第一行单元格,调整表头样式
45 for cell in ws[1]:
46 # 设置单元格填充颜色
47 cell.fill = header_fill
48 # 设置单元格对齐方式
49 cell.alignment = align
50 # 设置单元格边框
51 cell.border = header_border
52
53 # 获取最后一行行号
54 row_num = ws.max
55
56 # 从第二行开始,循环到倒数第二行
57 for row in ws.iter_rows(min_row=2, max_row=(row_num-1)):
58 # 循环取出单元格,调整表中样式
59 for cell in row:
60 cell.fill = content_fill
61 cell.alignment = align
62 cell.border = content_border
63
64 # 循环最后一行单元格,调整表尾样式
65 for cell in ws[row_num]:
66 cell.fill = bottom_fill
67 cell.alignment = align
68 cell.border = content_border
69
70 # 保存
71 wb.save(file_path)
首先第 3 行从openpyxl库的styles模块中,导入了4个表示各类别的样式对象。
1.PatternFill 对象表示填充,可以用于填充颜色。所以第 6、8、10 三行代码分别定义了3种颜色样式;
2.Alignment 对象表示对齐方式,所以第 13 行代码定义了1种对齐样式;
3.Border 对象表示边框,所以第 18、20 行代码分别定义了2种边框样式;
4.第16行代码Side对象是作为Border对象的参数值,它的作用是定义边样式。

第 46-51 行中的代码,是在设置表头单元格的样式属性。
将第6行定义好的,颜色样式header_fill赋值给该单元格的填充属性fill,即可完成填充样式的设置。
这说明,我们在设置具体单元格的样式属性时,用的是赋值修改的方法。
这种先定义样式再赋值执行,与Excel软件中选好样式工具栏中的具体样式再“点击”修改,倒挺相近的。

因此,我们在“定义单元格样式”功能块中需要学习的:
1.是单元格的样式属性(样式工具栏);
2.是如何定义各样式属性的具体值(工具栏中具体样式)

1-2-4
# 从openpyxl库styles模块中导入四个类
from openpyxl.styles import PatternFill, Alignment, Side, Border # 定义表头填充样式,颜色为橙色,纯色填充
header_fill = PatternFill('solid', fgColor='FF7F24')
# 定义表中填充样式,颜色为淡黄色,纯色填充
content_fill = PatternFill('solid', fgColor='FFFFE0')
# 定义表尾填充样式,颜色为淡桔红色,纯色填充
bottom_fill = PatternFill('solid', fgColor='EE9572') # 定义对齐样式横向居中、纵向居中
align = Alignment(horizontal='center', vertical='center') # 定义边样式为细边框
side = Side('thin')
# 定义表头边框样式,有底部和右侧细边框
header_border = Border(bottom=side, right=side)
# 定义表中、表尾边框样式,有左侧细边框
content_border = Border(left=side)
1-2-5
# 导入模块
from openpyxl import load_workbook
# 打开工作表
file_path = './material/事业01部_副本.xlsx'
wb = load_workbook(file_path)
ws = wb.active # 打印出第2行到第9行
for row in ws.iter_rows(min_row=2, max_row=9, values_only=True):
print(row) values_only=True,只取数值。
遍历取出行,是要进行样式修改的,不能只取数值,
所以使用iter_rows(min_row,max_row),此时values_only默认为False。
有了Sheet.iter_rows(),
就可以根据其最大行参数值和最小行参数值,确定需要修改的范围了。
如果是其他工作表,表中区域可能就不是从第2-第9行了,而是从第2行到倒数第2行。
max_row是工作表Sheet的一个属性,返回的属性值是一个整数。
这个整数值代表了工作表的最大行数。如果工作表共有9行,那Sheet.max_row 返回的就是整数9。
 1-3-1
修改“表中”单元格
表中单元格的样式是:颜色填充为淡黄色;水平和垂直方向都居中;左侧有细框线。
1 # 导入模块
2 from openpyxl import load_workbook
3 from openpyxl.styles import PatternFill, Alignment, Side, Border
4
5 # 定义表头颜色样式为橙色
6 header_fill = PatternFill('solid', fgColor='FF7F24')
7 # 定义表中、表尾颜色样式为淡黄色
8 content_fill = PatternFill('solid', fgColor='FFFFE0')
9 # 定义表尾颜色样式为淡桔红色
10 bottom_fill = PatternFill('solid', fgColor='EE9572')
11
12 # 定义对齐样式横向居中、纵向居中
13 align = Alignment(horizontal='center', vertical='center')
14
15 # 定义边样式为细条
16 side = Side('thin')
17 # 定义表头边框样式,有底边和右边
18 header_border = Border(bottom=side, right=side)
19 # 定义表中、表尾边框样式,有左边
20 content_border = Border(left=side)
21
22 # 打开工作表
23 file_path = './material/事业01部_副本.xlsx'
24 wb = load_workbook(file_path)
25 ws = wb.active
26
27 # 获取最后一行行号
28 row_num = ws.max_row
29
30 # 从第二行开始,循环到倒数第二行
31 for row in ws.iter_rows(min_row=2, max_row=row_num-1):
32 # 循环取出单元格,调整表中样式
33 for cell in row:
34 cell.fill = content_fill
35 cell.alignment = align
36 cell.border = content_border
第28行 是通过获取最大行数Sheet.max_row的方式获取最后一行的行号。
第31行 取出倒数第二行的行号——rownum-1。
第34行 是对表中的单元格填充颜色的修改,定义好的样式存储在contentfill中,在第8行,因此用这个变量去赋值。
第35行 空中是对表中的单元格对齐方式的修改,定义好的样式存储在align中,在第13行。
第36行 空中是对表中的单元格边框的修改,定义好的样式存储在content_border中,在第20行。
 1-3-2
修改“表尾”单元格
表尾单元格的样式是:颜色填充为淡桔红色;水平和垂直方向都居中;左侧有细框线。
1 # 导入模块
2 from openpyxl import load_workbook
3 from openpyxl.styles import PatternFill, Alignment, Side, Border
4
5 # 定义表头颜色样式为橙色
6 header_fill = PatternFill('solid', fgColor='FF7F24')
7 # 定义表中、表尾颜色样式为淡黄色
8 content_fill = PatternFill('solid', fgColor='FFFFE0')
9 # 定义表尾颜色样式为淡桔红色
10 bottom_fill = PatternFill('solid', fgColor='EE9572')
11
12 # 定义对齐样式横向居中、纵向居中
13 align = Alignment(horizontal='center', vertical='center')
14
15 # 定义边样式为细条
16 side = Side('thin')
17 # 定义表头边框样式,有底边和右边
18 header_border = Border(bottom=side, right=side)
19 # 定义表中、表尾边框样式,有左边
20 content_border = Border(left=side)
21
22 # 打开工作表
23 file_path = './material/事业01部_副本.xlsx'
24 wb = load_workbook(file_path)
25 ws = wb.active
26
27 # 获取最后一行行号
28 row_num = ws.max_row
29
30 # 遍历最后一行
31 for row in ws[row_num]:
32 # 循环取出单元格,调整表尾样式
33 for cell in row:
34 cell.fill = bottom_fill
35 cell.alignment = align
36 cell.border = content_border
第28行 是通过获取最大行数Sheet.max_row的方式获取最后一行的行号。
第31行 是需填写:取出最后一行——ws[rownum]。
第34行 是对表尾的单元格填充颜色的修改,定义好的样式存储在bottomfill中,在第10行,因此用这个变量去赋值。
第35行 是对表尾的单元格对齐方式的修改,定义好的样式存储在align中,在第13行。
第36行 是对表尾的单元格填充颜色的修改,定义好的样式存储在content_border中,在第20行。

20201203-6 设置excel样式【】的更多相关文章

  1. POI 设置Excel样式(转)

    POI 设置Excel样式 POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSh ...

  2. asp.net将页面内容按需导入Excel,并设置excel样式,下载文件(解决打开格式与扩展名指定的格式不统一的问题)

    //请求一个excel类 Microsoft.Office.Interop.Excel.ApplicationClass excel = null; //创建 Workbook对象 Microsoft ...

  3. C# worksheet设置Excel样式

    1.例子导出Excel的样式 样式代码 public void Exportdatagridviewtoexcel(string Textname) { SaveFileDialog savedial ...

  4. C# worksheet设置Excel样式(转载)

    1.例子导出Excel的样式public void Exportdatagridviewtoexcel(string Textname) { SaveFileDialog savedialog = n ...

  5. Python设置Excel样式

    前面已经详细讲解过使用Python对Excel表格进行读.写操作,本文主要讲解下使用Python设置Excel表格的样式. 深入学习请参考openpyxl官方文档: https://openpyxl. ...

  6. asp.net数据导出到excel表格,并设置表格样式

    1.首先在项目中添加引用

  7. Response输出excel设置文本样式

    在网上查了些Response导出excel然后设置样式的方法,发现没有一个可行的于是开始自己研究, 发现可以通过输出样式的方式进行配置,我要设置的是全文本格式在excel样式是这样的mso-numbe ...

  8. POI HSSFCellStyle 设置 Excel 单元格样式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...

  9. jxl 处理 Excel 样式

    jxl 能够操作的 excel 样式: 1. Workbook的格式设置(代表一个excel文件) 2. Sheet的格式设置(代表一个表格) 3. Cell的格式设置(代表一个单元格) PS:此jx ...

随机推荐

  1. python的pip快速安装代码

    pip install xx,经常由于网速,或者安装版本问题导致安装速度慢超时等问题, 现提供一个py镜像安装代码,安装库文件前执行下这个程序,可以很快下载 cmd 进入命令提示符 python .p ...

  2. 关于ABBYY的常见问题与解答

    问:ABBYY的版本那么多,我不知道哪款是我需要的.可不可以帮助我选择? 答:您可在此查看不同版本的功能介绍与版本对比,选择适合自己的版本即可. 查看ABBYY FineReader 15功能:查看A ...

  3. vulnhub: DC 9

    信息收集: root@kali:/opt/test# nmap -A -v 192.168.76.137 Starting Nmap 7.80 ( https://nmap.org ) at 2020 ...

  4. JVM(二)-内存区域之线程私有区

    概述: 对于从事C.C++开发的程序员来说,在内存管理领域,他们既是拥有最高权力的"皇帝",又是从事最基础工作的劳动人民--既拥有每个对象的"所有权", 又担负 ...

  5. Python学习系列之列表(十一)

    一.为什么需要列表 变量可以存储一个元素,而列表是一个"大容器"可以存储N多个元素,程序可以方便地对这些数据进行整体操作 列表相当于其它语言中的数组 二.列表的创建1.列表需要使用 ...

  6. NOIP2013 解题报告

    TG Day1 T3 货车运输 考虑货车的运输路径,最小边肯定是越大越好. 那就把图的最大生成树拉出来,每一辆货车在上面都有唯一确定的运输路径,否则必然会经过一条更小或相同的边. 然后倍增求路径上的最 ...

  7. 痞子衡嵌入式:探析开启CRC完整性校验的IAR工程生成.out和.bin文件先后顺序

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是开启CRC完整性校验的IAR工程生成.out和.bin文件先后顺序问题. 痞子衡之前写了一篇 <在IAR开发环境下为工程开启CRC ...

  8. 学习关注:学习C++的前景

    许多朋友都有这样的疑问,学习C/++能做什么?有什么好处?薪资怎么样,下面就为大家来解答! 像前面的文章有提到过,计算机专业位列热门专业第一门,可想前景如何.C语言C++属于高级语言,适合人类编写,现 ...

  9. T-SQL——基础语法

    目录 0. 定义变量 1. 批处理 2. 条件逻辑--IF 3. 逻辑分支--CASE 4. 循环语句--WHILE 5. 附录--关于CASE表达式的实现函数 6. 参考 shanzm-2020年1 ...

  10. JDK 15已发布,你所要知道的都在这里!

    JDK 15已经在2020年9月15日发布!详情见 JDK 15 官方计划.下面是对 JDK 15 所有新特性的详细解析! 官方计划 2019/12/12 Rampdown Phase One (fo ...