当前位置 博文首页 > 数据分析与统计学之美的博客:python自动化办公——python操作Ex
本文是鉴于有些粉丝的工作需求,有时候需要遇到这些文件的处理。因此,我写了一个文章集合,供大家参考,整篇文章已经整理成册(如下图所示)。由于文档获取人数太多,大家如有需求,请关注公众号:【数据分析与统计学之美】,回复关键词:【自动化文档】!
??章节一:python使用openpyxl操作excel
????1、openpyxl库介绍
????2、python怎么打开及读取表格内容?
???????1)Excel表格述语
???????2)打开Excel表格并获取表格名称
???????3)通过sheet名称获取表格
???????4)获取表格的尺寸大小
???????5)获取表格内某个格子的数据
?????????① sheet[“A1”]方式
?????????② sheet.cell(row=, column=)方式
???????6)获取某个格子的行数、列数、坐标
???????7)获取一系列格子
?????????① sheet[]方式
?????????② .iter_rows()方式
?????????③ sheet.rows()
????3、python如何向excel中写入某些内容?
???????1)修改表格中的内容
?????????① 向某个格子中写入内容并保存
?????????② .append():向表格中插入行数据
?????????③ 在python中使用excel函数公式(很有用)
?????????④ .insert_cols()和.insert_rows():插入空行和空列
?????????⑤ .delete_rows()和.delete_cols():删除行和列
?????????⑥ .move_range():移动格子
?????????⑦ .create_sheet():创建新的sheet表格
?????????⑧ .remove():删除某个sheet表
?????????⑨ .copy_worksheet():复制一个sheet表到另外一张excel表
?????????⑩ sheet.title:修改sheet表的名称
?????????? 创建新的excel表格文件
?????????? sheet.freeze_panes:冻结窗口
?????????? sheet.auto_filter.ref:给表格添加“筛选器”
????4、批量调整字体和样式
???????1)修改字体样式
???????2)获取表格中格子的字体样式
???????3)设置对齐样式
???????4)设置边框样式
???????5)设置填充样式
???????6)设置行高和列宽
???????7)合并单元格
??章节二:python使用PyPDF2和pdfplumber操作pdf
????1、PyPDF2和pdfplumber库介绍
????2、python提取PDF文字内容
???????1)利用pdfplumber提取文字
???????2)利用pdfplumber提取表格并写入excel
????3、PDF合并及页面的排序和旋转
???????1)分割及合并pdf
?????????① 合并pdf
?????????② 拆分pdf
???????2)旋转及排序pdf
?????????① 旋转pdf
?????????② 排序pdf
????4、pdf批量加水印及加密、解密
???????1)批量加水印
???????2)批量加密、解密
?????????① 加密pdf
?????????② 解密pdf并保存为未加密的pdf
??章节三:python使用python-docx操作word
????1、python-docx库介绍
????2、Python读取Word文档内容
???????1)word文档结构介绍
???????2)python-docx提取文字和文字块儿
?????????① python-docx提取文字
?????????② python-docx提取文字块儿
???????3)利用Python向Word文档写入内容
?????????① 添加段落
?????????② 添加文字块儿
?????????③ 添加一个分页
?????????④ 添加图片
?????????⑤ 添加表格
?????????⑥ 提取word表格,并保存在excel中(很重要)
????3、利用Python调整Word文档样式
???????1)修改文字字体样式
???????2)修改段落样式
?????????① 对齐样式
?????????② 行间距调整
?????????③ 段前与段后间距
这里需要大家仔细查看图中的每一项内容,知道什么是“行(row)、列(column)”?什么是“格子(cell)”?什么是“sheet表”?
from openpyxl import load_workbook
workbook = load_workbook(filename = "test.xlsx")
workbook.sheetnames
结果如下:
from openpyxl import load_workbook
workbook = load_workbook(filename = "test.xlsx")
workbook.sheetnames
sheet = workbook["Sheet1"]
print(sheet)
结果如下:
sheet.dimensions
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
cell1 = sheet["A1"]
cell2 = sheet["C11"]
print(cell1.value, cell2.value)
"""
workbook.active 打开激活的表格;
sheet["A1"] 获取A1格子的数据;
cell.value 获取格子中的值;
"""
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
cell1 = sheet.cell(row = 1,column = 1)
cell2 = sheet.cell(row = 11,column = 3)
print(cell1.value, cell2.value)
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
cell1 = sheet["A1"]
cell2 = sheet["C11"]
print(cell1.value, cell1.row, cell1.column, cell1.coordinate)
print(cell2.value, cell2.row, cell2.column, cell2.coordinate)
"""
.row 获取某个格子的行数;
.columns 获取某个格子的列数;
.corordinate 获取某个格子的坐标;
"""
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
# 获取A1:C2区域的值
cell = sheet["A1:C2"]
print(cell)
for i in cell:
for j in i:
print(j.value)
结果如下:
特别的:如果我们只想获取“A列”,或者获取“A-C列”,可以采取如下方式:
sheet["A"] --- 获取A列的数据
sheet["A:C"] --- 获取A,B,C三列的数据
sheet[5] --- 只获取第5行的数据
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
# 按行获取值
for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2):
for j in i:
print(j.value)
# 按列获取值
for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2):
for j in i:
print(j.value)
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
for i in sheet.rows:
print(i)
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
sheet["A1"] = "哈喽" # 这句代码也可以改为cell = sheet["A1"] cell.value = "哈喽"
workbook.save(filename = "哈喽.xlsx")
"""
注意:我们将“A1”单元格的数据改为了“哈喽”,并另存为了“哈喽.xlsx”文件。
如果我们保存的时候,不修改表名,相当于直接修改源文件;
"""
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
data = [
["唐僧","男","180cm"],
["孙悟空","男","188cm"],
["猪八戒","男","175cm"],
["沙僧","男","176cm"],
]
for row in data:
sheet.append(row)
workbook.save(filename = "test.xlsx")
结果如下:
# 这是我们在excel中输入的公式
=IF(RIGHT(C2,2)="cm",C2,SUBSTITUTE(C2,"m","")*100&"cm")
# 那么,在python中怎么插入excel公式呢?
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
sheet["D1"] = "标准身高"
for i in range(2,16):
sheet["D{}".format(i)] = '=IF(RIGHT(C{},2)="cm",C{},SUBSTITUTE(C{},"m","")*100&"cm")'.format(i,i,i)
workbook.save(filename = "test.xlsx")
结果如下:
此时,你肯定会好奇,python究竟支持写哪些“excel函数公式”呢?我们可以使用如下操作查看一下。
import openpyxl
from openpyxl.utils import FORMULAE
print(FORMULAE)
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
sheet.insert_cols(idx=4,amount=2)
sheet.insert_rows(idx=5,amount=4)
workbook.save(filename = "test.xlsx")
结果如下:
workbook = load_workbook(filename = "test.xlsx")
sheet = workbook.active
print(sheet)
# 删除第一列,第一行
sheet.delete_cols(idx=1)
sheet.delete_rows(idx=1)
workbook.save(filename = "test.xlsx")
结果如下: