Excel查询重复数据
代码
def search_data(): from openpyxl import load_workbook # 加载文件 wb = load_workbook('./base_data/打卡时间.xlsx') # 激活Sheet sh = wb.active # 建立已经读过数据列表 data = [] # 建立重复数据列表 index = [] # 读取数据 for i,c in enumerate(sh['B']): # 记录是否重复 # if c.value in data: # flag = True # else: # flag = False flag = c.value in data if flag: index.append(i) else: data.append(c.value) # 处理重复数据 from openpyxl.styles import PatternFill fill = PatternFill('solid',fgColor='AEEEEE') for i,r in enumerate(sh.rows): # 判断是否是重复索引行 if i in index: for c in r: c.fill = fill # 保存数据 wb.save('./create_data/25_打卡时间_重复检测.xlsx') if __name__ =='__main__': search_data()
Excel提取身份证号信息
代码
def get_data(): from openpyxl import load_workbook # 加载文件 wb = load_workbook('./base_data/人员信息.xlsx') # 激活Sheet sh = wb.active # 获取Sheet中最后一列是多少 max_col = sh.max_column # 读取数据-只读取一列-遍历每一行获取具体数据 for i,cell in enumerate(sh['B']): # 从身份证号里提取内容- 6位行政区划 4年 2月 2日 4位个人数字 pno = cell.value # 年 year = pno[6:10] # 月 mouth = pno[10:12] # 日 day = pno[12:14] # 将年存到后面的列 sh.cell(i+1,max_col+1).value = year # 将月存到后面的列 sh.cell(i+1,max_col+2).value = mouth # 将日存到后面的列 sh.cell(i+1,max_col+3).value = day # 保存文件 wb.save('./create_data/26_提取身份证信息.xlsx') if __name__ =='__main__': get_data()
Python操作Excel模块库文档
https://www.osgeo.cn/openpyxl/index.html 中文
Python操作Word基础
在办公自动化的操作,往往可能会存在Word的操作。因为在办公时,对文档的操作是必不可少的。而在Python操作Word时,可以使用一个三方的模块库 Python-docx
安装
pip install python-docx
常用方法与属性
函数名&属性 | 含义 |
docx.Document() | 创建word文件 |
doc.add_heading(content,level) | 增加word标题 |
doc.save(path) | 保存word文件 |
代码
from docx import Document def create_word(): # 创建word文档 doc1 = Document() # 增加标题 doc1.add_heading('欢迎使用Python创建Word',0) doc1.add_heading('Python操作 增加1级标题',1) doc1.add_heading('Python操作 增加2级标题',2) # 保存文档 doc1.save('./create_data/01_创建word文档.docx') if __name__ == '__main__': create_word()
Word写入段落数据
常用方法与属性
函数名&属性 | 含义 |
doc.add_paragraph(content,style) | 增加word段落 |
paragraph.add_run(content) | 追加word段落内容 |
# 样式表 from docx.enum.style import WD_STYLE
代码
from docx.enum.style import WD_BUILTIN_STYLE def create_word(): from docx import Document # 创建一个word文档 doc1 = Document() # 增加段落信息 doc1.add_paragraph('Python第一阶段','Title') # doc1.add_paragraph('Python第一阶段',style = 'Title') par1 =doc1.add_paragraph('本阶段是进入“程序员”的门槛,需要学习编程基本的知识。本阶段会从0开始,循序渐进。让小伙伴们学完本阶段,可以掌握:变量、数据类型、控制语句、容器、函数和面向对象等。教程中会穿插一些有趣的案例,寓教于乐,引起大家的兴趣。 ') # 给段落后面追加内容 par1.add_run('“兴趣永远是好的老师,小童只能排第二”。') doc1.add_paragraph('本阶段是进入“程序员”的门槛,需要学习编程基本的知识。本阶段会从0开始,循序渐进。让小伙伴们学完本阶段,可以掌握:变量、数据类型、控制语句、容器、函数和面向对象等。教程中会穿插一些有趣的案例,寓教于乐,引起大家的兴趣。 “兴趣永远是好的老师,高淇老师只能排第二”。') # 增加列表-无序 doc1.add_paragraph('哪个不是动物:') doc1.add_paragraph('喜洋洋',style='ListBullet') doc1.add_paragraph('美羊羊',style='ListBullet') doc1.add_paragraph('懒洋洋',style='ListBullet') doc1.add_paragraph('苹果',style='ListBullet') doc1.add_paragraph('灰太狼',style='ListBullet') # 增加列表-有序 doc1.add_paragraph('今年的学习计划:') doc1.add_paragraph('Python',style='ListNumber') doc1.add_paragraph('HTML',style='ListNumber') doc1.add_paragraph('JS',style='ListNumber') doc1.add_paragraph('Flask',style='ListNumber') # 增加引用 doc1.add_paragraph('这个是一个引用内容',style='Intense Quote') # 保存word文档 doc1.save('./create_data/02_增加段落.docx') if __name__ =='__main__': create_word()
Word增加图片
常用方法与属性
函数名&属性 | 含义 |
doc.add_picture(path) | 增加word图片 |
pic.height | 获取word图片高度 |
pic.width | 获取word图片宽度 |
doc.sections[0].page_width | 获取页面的宽度 |
doc.sections[0].left_margin | 获取页面左边距 |
代码
def create_word(): from docx import Document # 创建一个文档 doc1 = Document() # 增加图片 pic = doc1.add_picture('./base_data/backg.jpg') # 获取文档的宽度 page_width = doc1.sections[0].page_width # 获取文档的左边距 page_left_width = doc1.sections[0].left_margin print(page_width) print(page_left_width) # 获取中间内容的宽度 content_width = page_width-page_left_width*2 print(content_width) # 获取图片应该缩小的比例 # 如果图片或者页面宽度值太高,有可能程序无法计算,可以考虑同时缩小几倍 sc =(content_width/100)/(pic.width/100) # 修改图片的宽、高 pic.width = int(pic.width*sc) pic.height = int(pic.height*sc) # 保存文档 doc1.save('./create_data/03_增加图片.docx') if __name__ == '__main__': create_word()
Word增加表格
常用方法与属性
函数名&属性 | 含义 |
doc.add_table(rows=num,cols=num) | 增加word表格 |
table.add_row().cells | 增加一行表格 |
ell.text | 获取/设置单元格 |
table.rows | 获取行数据 |
代码
def create_table(): from docx import Document # 创建word文档 doc1 = Document() # 增加表格 table = doc1.add_table(rows=1,cols=3) # 设置表格的内容 cells = table.rows[0].cells cells[0].text = '编号' cells[1].text = '姓名' cells[2].text = '职业' data = ( (1,'吕小布','将军'), (2,'诸葛亮','军事'), (3,'刘备','主攻'), ) for i,n,w in data: # 增加一行数据 tmp_cell = table.add_row().cells ''' 问题1: tmp_cell[0] = i TypeError: 'tuple' object does not support item assignment 有可能是直接给单元格设置内容了!需要给text属性设置内容 ''' ''' 问题2: for char in text: TypeError: 'int' object is not iterable 给单元格设置值,不能是数字,需要转成str ''' tmp_cell[0].text = str(i) tmp_cell[1].text = n tmp_cell[2].text = w # 保存文档 doc1.save('./create_data/04_增加表格.docx') if __name__ =='__main__': create_table()