目录

一、处理Excel文件的相关模块介绍及安装

1、openpyxl模块

2、安装方式

3、测试

二、打开Excel文件读取Excel表格内容

1、Excel表格术语

2、打开工作薄

load_workbook( 文件名 )

3、获取工作表

workbook[ sheet名称 ]

workbook.active

4、获取表格尺寸

sheet.dimensions

5、获取表格内某个格子的数据

sheet[' A1 ']         cell.value

6、获取一系列格式

7、指定行和列的范围,按行获取,按列获取

.lter_rows(min_row=最低行数 , max_row=最高行数 , min_col=最低列数 , max_col=最高列数 )

.lter_cols(min_row= 最低行数, max_row= 最高行数 , min_col= 最低列数, max_col=最高列数 )

三、案例 - 找到41码鞋子的坐标

四、使用Python向Excel文件中写入数据

1、向某个格子写入内容

sheet['A1'] = ' hello, Python '

2、用某个格子写入内容

cell.value = ' hello, Python '

3、使用Python列表数据插入一行

sheet.append( Python列表 )

4、插入公式

五、使用Python向工作表中插入/删除行与列

1、插入一列

.insert_cols( idx=数字编号 )

2、插入多列

.insert_cols( idx=数字编号, amount=要插入的列数 )

3、插入一行

.insert_rows( idx=数字编号 )

4、插入多行

.insert_rows( idx=数字编号, amount=要插入的列数 )

5、删除列

.delete_cols( idx=数字编号, amount=要删除的列数 )

6、删除行

.delete_rows( idx=数字编号, amount=要删除的行数 )

7、移动格子

.move_range('A3:B8', rows=2, cols=-2)

六、使用Python操作工作表对象

1、创建新的sheet

workbook.creat_sheet(sheet名称)

2、删除一个sheet

workbook.remove(sheet实例)

3、复制一个sheet

workbook.copy_worksheet(sheet实例)

4、修改表格名称

sheet.title

5、冻结窗格

sheet.freeze_panes='D2'

6、添加筛选

sheet.auto_filter.ref=sheet.dimensions

七、案例

将41码的鞋子数据所有行复制到一个新的Excel文件中

八、使用Python操作Excel表格的格式

1、修改字体样式

Fort(name=字体名称 , size=字体大小 , bold=是否加粗 , italic=是否斜体 , color=字体颜色 )

2、获取表格中字体的样式

cell.font.属性

3、设置对齐样式

Alignment(horizontal=水平对齐方式 , vertical=垂直对齐方式 , text_rotation=旋转角度 , wrap_text=是否自动换行 )

4、设置边框样式

Side(style=边缘样式, color=边线颜色)

Border(left=左边线样式 , right=右边线样式 , top=上边线样式 , bottom=下边线样式 )

5、设置填充样式

PatternFill(fill_type=填充样式 , fgColor=填充颜色 )

GradientFill(stop=(渐变颜色1, 渐变颜色2, ......))

6、设置行高和列宽

.row_dimensions[行编号].height=行高

.column_dimensions[列编号].width=列宽

7、合并单元格

.merge_cells(待合并的格子编号)

.merge_cells(start_row=起始行号 , start_column=起始列号 , end_row=结束行号 , end_column=结束列号 )

8、取消合并单元格

.unmerge_cells(待合并的格子编号)

.unmerge_cells(start_row=起始行号 , start_column=起始列号 , end_row=结束行号 , end_column=结束列号 )

九、案例 - 设置好评数据的样式

十、使用Python向Excel中插入图片

插入图片

openpyxl.drawing,image

sheet.add_image()

十一、使用Python向Excel中插入柱状图

插入柱状图

BarChart()         Reference()

十二、使用Python向Excel中插入条形图

条形图

LineChart()        Reference()

十三、案例 - 薪水明细 - 设置Excel的样式

十四、薪水明细 - 批量生成新的Excel文件


一、处理Excel文件的相关模块介绍及安装

1、openpyxl模块

可以读取和写入Excel文件
第三方模块,需要单独安装
处理Excel数据
处理Excel样式
在表格内插入图表
......

2、安装方式

在线安装方式:

  • windows用户: pip install openpyxl
  • Mac用户: pip3 install openpyxl

3、测试

  • windows用户打开命令行输入python
  • Mac用户打开终端输入python3
  • 然后输入 import openpyxl

如果点击回车之后没有报错,说明安装成功

二、打开Excel文件读取Excel表格内容

1、Excel表格术语

2、打开工作薄

load_workbook( 文件名 )

import openpyxl
# 打开一个Excel表格
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
# 查看sheetnames
print(workbook.sheetnames)-----------------------------输出结果------------------------------------
['Sheet1', 'Sheet2 ', 'Sheet3']

3、获取工作表

workbook[ sheet名称 ]

获取指定的工作表

import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
sheet=workbook['Sheet1']
print(sheet)-----------------------------输出结果------------------------------------
<Worksheet "Sheet1">

workbook.active

获取当前工作表

import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
print(workbook.active)-----------------------------输出结果------------------------------------
<Worksheet "Sheet2 ">

4、获取表格尺寸

sheet.dimensions

import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
sheet=workbook['Sheet1']
print(sheet.dimensions)-----------------------------输出结果------------------------------------
A1:D29

5、获取表格内某个格子的数据

sheet[' A1 ']         cell.value

import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
sheet=workbook['Sheet1']
cell=sheet['A1']
print(cell.value)-----------------------------输出结果------------------------------------
评论内容

6、获取一系列格式

sheet['A1:A5']        sheet['A']        sheet['A:C']        sheet[5]        .rows        .columns

# 获取A1:A5的信息元组
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
sheet=workbook['Sheet1']
cell=sheet['A1:A5']
print(cell)-----------------------------输出结果------------------------------------
((<Cell 'Sheet1'.A1>,), (<Cell 'Sheet1'.A2>,), (<Cell 'Sheet1'.A3>,), (<Cell 'Sheet1'.A4>,), (<Cell 'Sheet1'.A5>,))
# 获取整个A1:A5的内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
sheet=workbook['Sheet1']
cells=sheet['A1:A5']
for cell in cells:print(cell[0].value)-----------------------------输出结果------------------------------------
评论内容
一直想买这样的一款鞋,找了很多家对比,还是这家好
好好看,非常适合我,正好穿出去见人
外观颜值:很不错,颜值很高。材质手感:手感好
外观颜值:颜值很高。材质手感:质量好
# 获取整个B列的内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
cols=sheet['B']
for cell in cols:print(cell.value)
# 获取A-C三列的信息元组
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
cols=sheet['A:C']
print(cols)
-----------------------------输出结果------------------------------------
((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.A2>, <Cell 'Sheet1'.A3>, ......
# 获取 A-C 三列的内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
cols=sheet['A:C']
for col in cols:for cell in col:print(cell.value)
# 获取第5行的内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
row=sheet[5]
for cell in row:print(cell.value)
# 获取整个文件所有行的元组
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
row=sheet.rows
for yuanzu in row:print(yuanzu)
-----------------------------输出结果------------------------------------
(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>, <Cell 'Sheet1'.D1>)
(<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>, <Cell 'Sheet1'.D2>)
(<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>, <Cell 'Sheet1'.D3>)
(<Cell 'Sheet1'.A4>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>, <Cell 'Sheet1'.D4>)
(<Cell 'Sheet1'.A5>, <Cell 'Sheet1'.B5>, <Cell 'Sheet1'.C5>, <Cell 'Sheet1'.D5>)
(<Cell 'Sheet1'.A6>, <Cell 'Sheet1'.B6>, <Cell 'Sheet1'.C6>, <Cell 'Sheet1'.D6>)
(<Cell 'Sheet1'.A7>, <Cell 'Sheet1'.B7>, <Cell 'Sheet1'.C7>, <Cell 'Sheet1'.D7>)
(<Cell 'Sheet1'.A8>, <Cell 'Sheet1'.B8>, <Cell 'Sheet1'.C8>, <Cell 'Sheet1'.D8>)
(<Cell 'Sheet1'.A9>, <Cell 'Sheet1'.B9>, <Cell 'Sheet1'.C9>, <Cell 'Sheet1'.D9>)
......  ......
# 获取每行的信息内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
rows=sheet.rows
for row in rows:for cell in row:print(cell.value)print('----------------------------------------------------')-----------------------------输出结果------------------------------------
评论内容
评论时间
购买颜色
鞋码
----------------------------------------------------
一直想买这样的一款鞋,找了很多家对比,还是这家好
2020-03-22 17:39:56
黑色
42
----------------------------------------------------
......  ......
# 获取全文每一列的信息内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
cols=sheet.columns
for col in cols:for cell in col:print(cell.value)print('----------------------------------------------------')-----------------------------输出结果------------------------------------
评论内容
一直想买这样的一款鞋,找了很多家对比,还是这家好
外观颜值:很不错,颜值很高。材质手感:手感好
......   ......
----------------------------------------------------
评论时间
2020-03-22 17:39:56
2020-05-14 14:34:58
......   ......
----------------------------------------------------
购买颜色
黑色
黑色
......   ......

7、指定行和列的范围,按行获取,按列获取

.lter_rows(min_row=最低行数 , max_row=最高行数 , min_col=最低列数 , max_col=最高列数 )

.lter_cols(min_row= 最低行数, max_row= 最高行数 , min_col= 最低列数, max_col=最高列数 )

# 按行读取了1-5行,1-4列的所有信息内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
rows=sheet.iter_rows(min_row=1, max_row=5, min_col=1, max_col=4)
for row in rows:for cell in row:print(cell.value)print('----------------------------------------------------')
# 按列读取了1-5行,1-4列的所有信息内容
import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
cols=sheet.iter_cols(min_row=1, max_row=5, min_col=1, max_col=4)
for col in cols:for cell in col:print(cell.value)print('----------------------------------------------------')

三、案例 - 找到41码鞋子的坐标

import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')   # 打开文件
sheet=workbook['Sheet1']    # 获取指定工作表
cols=sheet['D']    # 获取D列
count=0
for cell in cols:if cell.value==41:count+=1print('D'+str(cell.row))     # 获取对应的行号
print('41码的鞋子一共销售了',count,'双')-----------------------------输出结果------------------------------------
D4
D10
D14
D15
D23
D27
41码的鞋子一共销售了 6 双

四、使用Python向Excel文件中写入数据

1、向某个格子写入内容

sheet['A1'] = ' hello, Python '

注:代码运行时,Excel文件必须关闭才能运行

import openpyxl
workbook=openpyxl.Workbook()    # 创建一个新的工作簿,Excel文件
# 创建sheet工作表
sheet=workbook.create_sheet()
sheet['A1']='hello,Python'      # 创建的sheet1中的A1内容为hello,Pythonworkbook.save('新表.xlsx')

2、用某个格子写入内容

cell.value = ' hello, Python '

import openpyxl
workbook=openpyxl.Workbook()    # 创建一个新的工作簿,Excel文件
# 创建sheet工作表
sheet=workbook.create_sheet()
cell=sheet['A1']
cell.value='Python'             # 创建的sheet1中的A1内容为 Pythonworkbook.save('新表.xlsx')

3、使用Python列表数据插入一行

sheet.append( Python列表 )

# 添加一行
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']lst=['姓名', '分数']
sheet.append(lst)
workbook.save('新表.xlsx')
# 添加多行
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']stu_lst=[['张三', 90],['李四', 80],['王五', 89],['陈六', 82]
]
for row in stu_lst:sheet.append(row)
workbook.save('新表.xlsx')

4、插入公式

直接赋值公式字符串

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet['B8']='=sum(B4:B7)'     # 将B4-B7的数值相加返回结果放到B8
workbook.save('新表.xlsx')

查看python可以支持Excel的公式

from openpyxl.utils import FORMULAE
print(FORMULAE)

五、使用Python向工作表中插入/删除行与列

1、插入一列

.insert_cols( idx=数字编号 )

# 在第一列之前添加一列
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.insert_cols(idx=1)
workbook.save('新表.xlsx')

2、插入多列

.insert_cols( idx=数字编号, amount=要插入的列数 )

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.insert_cols(idx=2, amount=3)    # 在第2列之前添加3列
workbook.save('新表.xlsx')

3、插入一行

.insert_rows( idx=数字编号 )

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.insert_rows(idx=2)    # 在第2行之前添加1行
workbook.save('新表.xlsx')

4、插入多行

.insert_rows( idx=数字编号, amount=要插入的列数 )

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.insert_rows(idx=4, amount=3)    # 在第2行之前添加3行
workbook.save('新表.xlsx')

5、删除列

.delete_cols( idx=数字编号, amount=要删除的列数 )

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.delete_cols(idx=1, amount=4)
workbook.save('新表.xlsx')

6、删除行

.delete_rows( idx=数字编号, amount=要删除的行数 )

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.delete_rows(idx=1, amount=3)   # 从第1行开始,删除3行
workbook.save('新表.xlsx')

7、移动格子

.move_range('A3:B8', rows=2, cols=-2)

正整数为向下或向右,负整数为向左或向上

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.move_range('A6:B6', rows=-5, cols=0)
workbook.save('新表.xlsx')

如果移动到的位置上已经有数据,则替换它。

六、使用Python操作工作表对象

1、创建新的sheet

workbook.creat_sheet(sheet名称)

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')workbook.create_sheet('Sheet2')print(workbook.sheetnames)
workbook.save('新表.xlsx')

2、删除一个sheet

workbook.remove(sheet实例)

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')sheet=workbook['Sheet2']
workbook.remove(sheet)workbook.save('新表.xlsx')

3、复制一个sheet

workbook.copy_worksheet(sheet实例)

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')sheet=workbook['Sheet1']
workbook.copy_worksheet(sheet)print(workbook.sheetnames)
workbook.save('新表.xlsx')

4、修改表格名称

sheet.title

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')sheet=workbook['Sheet1 Copy']
sheet.title='Sheet2'print(workbook.sheetnames)
workbook.save('新表.xlsx')

5、冻结窗格

sheet.freeze_panes='D2'

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')sheet=workbook['Sheet1']
sheet.freeze_panes='A2'     # 冻结了第一行workbook.save('新表.xlsx')

6、添加筛选

sheet.auto_filter.ref=sheet.dimensions

import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')sheet=workbook['Sheet3']
sheet.auto_filter.ref=sheet.dimensionsworkbook.save('京东鞋子评论信息.xlsx')

七、案例

将41码的鞋子数据所有行复制到一个新的Excel文件中

import openpyxl
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')
sheet=workbook['Sheet3']
# 获取所有行
rows=sheet.rows
lst=[]
for row in rows:if row[3].value==41:sub_lst=[]for i in range(0,4):sub_lst.append(row[i].value)lst.append(sub_lst)
print(len(lst))# 存储到一个新的Excel文件中
new_workbook=openpyxl.Workbook()
new_sheet=new_workbook.active
for row in lst:new_sheet.append(row)new_workbook.save('41码鞋子数据.xlsx')

八、使用Python操作Excel表格的格式

1、修改字体样式

Fort(name=字体名称 , size=字体大小 , bold=是否加粗 , italic=是否斜体 , color=字体颜色 )

import openpyxl
from openpyxl.styles import Font
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']
cell=sheet['A1']
font=Font(name='微软雅黑', size=20, bold=True, italic=True, color='ff0000')
cell.font=fontworkbook.save('新表.xlsx')

2、获取表格中字体的样式

cell.font.属性

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']
cell=sheet['A1']
font=cell.font
print(font.name, font.size, font.bold, font.color)-----------------------------输出结果------------------------------------
微软雅黑 20.0 True <openpyxl.styles.colors.Color object>
Parameters:
rgb='00ff0000', indexed=None, auto=None, theme=None, tint=0.0, type='rgb'

3、设置对齐样式

Alignment(horizontal=水平对齐方式 , vertical=垂直对齐方式 , text_rotation=旋转角度 , wrap_text=是否自动换行 )

import openpyxl
from openpyxl.styles import Alignment
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']
cell=sheet['A1']
algin=Alignment(horizontal='center', vertical='center')
cell.alignment=alginworkbook.save('新表.xlsx')

4、设置边框样式

Side(style=边缘样式, color=边线颜色)

Border(left=左边线样式 , right=右边线样式 , top=上边线样式 , bottom=下边线样式 )

import openpyxl
from openpyxl.styles import Side,Border
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']
cell=sheet['A1']
side=Side(style='thin', color='ff0000')   # 设置线条的形状和颜色
border=Border(left=side, top=side, right=side, bottom=side)
cell.border=border
workbook.save('新表.xlsx')

5、设置填充样式

PatternFill(fill_type=填充样式 , fgColor=填充颜色 )

GradientFill(stop=(渐变颜色1, 渐变颜色2, ......))

import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.styles import GradientFill
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']
# 填充颜色
cell=sheet['C5']
pattern_fill=PatternFill(fill_type='solid', fgColor='ff0000')
cell.fill=pattern_fill
# 渐变色
cell2=sheet['B1']
gradier=GradientFill(stop=('ff00ff', '00ff00'))
cell2.fill=gradierworkbook.save('新表.xlsx')

6、设置行高和列宽

.row_dimensions[行编号].height=行高

.column_dimensions[列编号].width=列宽

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']
# 设置第一行行高为50
sheet.row_dimensions[1].height=50
# 设置B列宽为40
sheet.column_dimensions['B'].width=40
workbook.save('新表.xlsx')

7、合并单元格

.merge_cells(待合并的格子编号)

.merge_cells(start_row=起始行号 , start_column=起始列号 , end_row=结束行号 , end_column=结束列号 )

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']# 合并 D1:G2 的单元格
sheet.merge_cells('D1:G2')# 合并第1-5行,8-12列的单元格
sheet.merge_cells(start_row=1, start_column=8, end_row=5, end_column=12)workbook.save('新表.xlsx')

8、取消合并单元格

.unmerge_cells(待合并的格子编号)

.unmerge_cells(start_row=起始行号 , start_column=起始列号 , end_row=结束行号 , end_column=结束列号 )

import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet2']
sheet.unmerge_cells('D1:G2')
sheet.unmerge_cells(start_row=1, start_column=8, end_row=5, end_column=12)
workbook.save('新表.xlsx')

九、案例 - 设置好评数据的样式

打开'京东鞋子评论信息.xlsx',将评论内容中含有‘好’的数据行背景标记为黄色,文本标记为红色,保存该Excel文件。

import openpyxl
from openpyxl.styles import Font,PatternFill
import re       # 正则表达式
workbook=openpyxl.load_workbook('京东鞋子评论信息.xlsx')font=Font(color='ff0000')   # 设置字体样式
fill=PatternFill(fill_type='solid', fgColor='ffff00')   # 设置填充样式
sheet=workbook['Sheet3']
workbook.copy_worksheet(sheet)
sheet.title='好评数据'
for row in workbook['好评数据'].rows:if re.search('.*好.*', row[0].value):    # 每行的第0个数据for i in range(0,4):row[i].fill=fillrow[i].font=font
workbook.save('京东鞋子评论信息.xlsx')

十、使用Python向Excel中插入图片

插入图片

openpyxl.drawing,image

sheet.add_image()

import openpyxl
from openpyxl.drawing.image import Image
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook.create_sheet('imagesheet')
# 创建图片对象
logo=Image('hmbb.png')
logo.height=90
logo.width=100
sheet.add_image(logo, 'A1')
workbook.save('新表.xlsx')

运行前先安装Pillow模块

pip install Pillow

十一、使用Python向Excel中插入柱状图

插入柱状图

BarChart()         Reference()

import openpyxl
from openpyxl.chart import BarChart,Reference
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']# 创建柱状图的图表对象
chart=BarChart()
# 数据的引用范围
data=Reference(worksheet=sheet, min_row=1, max_row=24, min_col=2,max_col=3)
# 类别的引用范围
categories=Reference(sheet, min_row=2, max_row=24, min_col=2)
# 将数据与类别添加到图表当中
chart.add_data(data,titles_from_data=True)
chart.set_categories(categories)
# 将图表插入到工作表中
sheet.add_chart(chart, 'F12')   # 把图表添加到F12的位置workbook.save('新表.xlsx')

十二、使用Python向Excel中插入条形图

条形图

LineChart()        Reference()

import openpyxl
from openpyxl.chart import LineChart,Reference
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet']# 创建条形图的图表对象
chart=LineChart()
# 数据的引用范围
data=Reference(worksheet=sheet, min_row=2, max_row=3, min_col=1,max_col=13)
# 类别的引用范围
categories=Reference(sheet, min_row=1, min_col=2, max_col=13)
# 将数据与类别添加到图表当中
chart.add_data(data, from_rows=True, titles_from_data=True)
chart.set_categories(categories)
# 将图表插入到工作表中
sheet.add_chart(chart, 'F12')   # 把图表添加到F12的位置workbook.save('新表.xlsx')

十三、案例 - 薪水明细 - 设置Excel的样式

从总的薪水报表中将每个职员的薪水明细分别整理成一个独立的Excel文件,新的Excel文件以员工的姓名命名,比如“张三.xlsx”

import openpyxl
from openpyxl.styles import Font,Alignment,Side,Border# 设置字体样式
font=Font(name='宋体', size=20, bold=True)
font2=Font(name='宋体', size=12, bold=True)
alignment=Alignment(horizontal='center', vertical='center', wrap_text=True) #水平垂直居中,wrap_text=True表示放不下就换行
side=Side(style='thin', color='000000')
border=Border(left=side, top=side, right=side, bottom=side)# 加载Excel文件
workbook=openpyxl.load_workbook('工资.xlsx')
sheet=workbook['Sheet1']# 获取指定的单元格的值
a1_value=sheet['A1'].value
l2_value=sheet['L2'].value# 获取指定的行
rows=sheet[3]
# print(rows)      # 每行都在一个元组中
lst_value=[]
for cell in rows:       # 遍历元组lst_value.append(cell.value)
# print(lst_value)    # 表头部分读取完毕# 将表头部分写进新的Excel文件中
new_workbook=openpyxl.Workbook()
new_sheet=new_workbook.active# 第一行 为 合并单元格 写入新的Excel文件中
new_sheet.merge_cells(start_row=1, end_row=1, start_column=1, end_column=12)
new_sheet.row_dimensions[1].height=25.8
new_sheet['A1']=a1_value
new_sheet['A1'].font=font
new_sheet['A1'].alignment=alignment# 继续写入第二行:发放薪水的单位 写入新的Excel文件中
new_sheet['L2']=l2_value
new_sheet['L2'].font=font2# 第三行: 各个标题 写入新的Excel文件中
new_sheet.append(lst_value)
three_rows=new_sheet[3]
for cell in three_rows:cell.font=font2cell.alignment=alignment    # 居中的对齐方式cell.border=border
new_sheet.row_dimensions[3].height=40.8new_workbook.save('工资信息01.xlsx')

十四、薪水明细 - 批量生成新的Excel文件

import openpyxl
from openpyxl.styles import Font,Alignment,Side,Border# 设置字体样式
font=Font(name='宋体', size=20, bold=True)
font2=Font(name='宋体', size=12, bold=True)
alignment=Alignment(horizontal='center', vertical='center', wrap_text=True) #水平垂直居中,wrap_text=True表示放不下就换行
side=Side(style='thin', color='000000')
border=Border(left=side, top=side, right=side, bottom=side)# 加载Excel文件
workbook=openpyxl.load_workbook('工资.xlsx')
sheet=workbook['Sheet1']# 获取指定的单元格的值
a1_value=sheet['A1'].value
l2_value=sheet['L2'].value# 获取指定的行
rows=sheet[3]
# print(rows)      # 每行都在一个元组中
lst_value=[]
for cell in rows:       # 遍历元组lst_value.append(cell.value)
# print(lst_value)    # 表头部分读取完毕for i in range(4,32):       # 产生4到31的整数序列# 将表头部分写进新的Excel文件中new_workbook=openpyxl.Workbook()new_sheet=new_workbook.active# 第一行 为 合并单元格 写入新的Excel文件中new_sheet.merge_cells(start_row=1, end_row=1, start_column=1, end_column=12)new_sheet.row_dimensions[1].height=25.8new_sheet['A1']=a1_valuenew_sheet['A1'].font=fontnew_sheet['A1'].alignment=alignment# 继续写入第二行:发放薪水的单位 写入新的Excel文件中new_sheet['L2']=l2_valuenew_sheet['L2'].font=font2# 第三行: 各个标题 写入新的Excel文件中new_sheet.append(lst_value)three_rows=new_sheet[3]for cell in three_rows:cell.font=font2cell.alignment=alignment    # 居中的对齐方式cell.border=bordernew_sheet.row_dimensions[3].height=40.8# 设置列宽  border包括边框的宽度,所以查看列宽会稍微小一些three_width=new_sheet[3]for col in three_width:new_sheet.column_dimensions[col.column_letter].width=13     # 设置所有列的列宽为13# print(dir(col))     # 查看列的功能字典# print(col.column_letter)    # 获取所有列的字母:A B C D...J K L# 向Excel表格中添加数据new_sheet['A4'].value = sheet['A' + str(i)].valuenew_sheet['B4'].value = sheet['B' + str(i)].valuenew_sheet['C4'].value = sheet['C' + str(i)].valuenew_sheet['D4'].value = sheet['D' + str(i)].valuenew_sheet['E4'].value = sheet['E' + str(i)].valuenew_sheet['F4'].value = '=SUM(C4:E4)'new_sheet['G4'].value = sheet['G' + str(i)].valuenew_sheet['H4'].value = sheet['H' + str(i)].valuenew_sheet['I4'].value = sheet['I' + str(i)].valuenew_sheet['J4'].value = sheet['J' + str(i)].valuenew_sheet['K4'].value = sheet['K' + str(i)].valuenew_sheet['L4'].value = '=F4-G4-H4-I4-J4-K4'# 设置第4行字体样式for_row = new_sheet[4]for cell in for_row:cell.alignment = alignmentcell.border = bordernew_workbook.save('salary/'+new_sheet['B4'].value+'.xlsx')    # B列为名字

python实现Excel自动化处理相关推荐

  1. python做excel自动化可视化-简直出神入化,教你用Python控制Excel实现自动化办公...

    1.安装 简直出神入化,教你用Python控制Excel实现自动化办公 2.操作一个简单的Excel文档 操作注释及代码: 简直出神入化,教你用Python控制Excel实现自动化办公 操作完成后,数 ...

  2. python做excel自动化-Python如何控制Excel实现自动化办公

    Python如何控制Excel实现自动化办公 发布时间:2020-04-07 09:51:44 来源:亿速云 阅读:132 作者:小新 这篇文章主要给大家讲解的是Python如何控制Excel实现自动 ...

  3. python做excel自动化-Python控制Excel实现自动化办公

    这篇文章介绍了Python控制Excel实现自动化办公的方法,主要用到了xlsxwriter库,该库可以很方便的实现操作excel,利用xlsxwriter提供的方法即可使用自动化办公. Python ...

  4. python做excel自动化-用python进行办公自动化都需要学习什么知识呢?

    自动化办公无非是excel.ppt.word.邮件.文件处理.数据分析处理.爬虫这些.我来一一介绍如何学习,找资料! 最近做了个Python办公自动化的Live讲座,不要脸的推一波~ python基础 ...

  5. 如何用Python操作Excel自动化办公?一个案例教会你openpyxl——读取数据

    欢迎大家关注我,我是拾陆,关注同名"二八Data" 数据分析工作最难搞的是处理数据的过程,不然不会有专门的ETL(数据抽取.转换.加载)工程师了.如果是企业级数据处理可能数据库直接 ...

  6. python做excel自动化-python操作excel让工作自动化

    某局某领导给了3只excel文件,一只里面有4个sheet需要处理,一个sheet有250+列,算下来总共有3000+列需要手动反复插入.删除列.拷贝.求和,所以给了4天的时间要完成. 我不愿意做大量 ...

  7. python做excel自动化视频教程-从零基础入门到精通用Python处理Excel数据视频教程...

    从零基础入门到精通用Python处理Excel数据视频教程 1.从零基础开始用python处理Excel数据 1-1 什么是python.mp4 1-2 为什么要学习用Python处理Excel表格. ...

  8. 【PDF】超简单!用Python让Excel自动化办公

    Excel作为当今最流行的办公软件之一,在数据编辑.处理和分析方面的表现都非常出色.但是,即使有 Excel的帮助,在面对重复性.机械性的事务时仍然要花费大量时间. 所以今天了解一下这本<超简单 ...

  9. python做excel自动化-用Python控制Excel实现自动化办公,手把手教你

    1.安装 2.操作一个简单的Excel文档 操作注释及代码: 操作完成后,数据存储结果如下: 3. 操作简单Excel文档并添加数据格式: PS:;粉丝的福利:最新的python精品.教.程,自己去小 ...

最新文章

  1. 一般熟练盲打需要多久_进口攻略!一般货物进口清关需要多久?如何有效提高清关效率?...
  2. php根据时间段分组,php按月分组(时间戳)
  3. 使用ANY和ALL条件
  4. Nginx Rtmp Module - HLS切片和级联播放
  5. 7.1.16 jQueray的鼠标事件
  6. 第十一届 蓝桥杯 单片机设计与开发项目 省赛 程序设计试题及源码
  7. python构建字典实现英文大写字母与ascii编码的转换_Python:将复杂的字符串字典从Unicode转换为ASCII...
  8. Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数【含代码】)- 案例篇
  9. 利用TCN网络实现MNIST手写体数据集的识别
  10. 单点服务器微信公众号,腾讯云联合微信降低开发门槛 微信生态从单点云开发到全面云开发...
  11. 快速读取内存文件-内存映射文件的方法
  12. 【Oracle】第一次安装失败,第二次成功,如何安全删除第一次的?
  13. 【Java后端】技术文档模板
  14. Azure云端迁移4种方式
  15. 电脑如何分盘win10_Win10电脑如何刻录光盘?用win10自带刻录工具来刻录DVD光盘教程...
  16. 2021秋季《数据结构》_EOJ 1086.哥尼斯堡的七桥问题
  17. T2-小度养小猫(贪心)
  18. 超级计算机燕 排名,第一卷 六年之前 HK171 舍弃的超级计算机燕? (485加更)
  19. 树莓派4b ubuntu 设置屏幕热插拔
  20. deepin20如何换源_Deepin 20 安装教程和基本配置

热门文章

  1. 移动端@2X 和 @3X图片的处理
  2. web前端出现的中文乱码的处理方式
  3. android高级UI之PathMeasure<一>--Path测量基础(nextContour、getPosTan、getMatrix、getSegment)
  4. 生而为人,不惊天动地,他人怎知
  5. android dropbear 密码,Android移植之dropbear
  6. 淘宝大促页面性能监控和优化实践
  7. basename函数 linux,Linux C中的basename函数用法示例
  8. 青海省计算机职业高中学校,青海的职业技术学校有哪些?
  9. android 行 64,android缺陷分析:内核空指针
  10. CTO助你走上值钱道路:程序员危机自救指南