Python办公自动化【Excel查询重复数据、Excel提取身份证号信息、Python操作Excel模块库文档、Python操作Word基础 】(四)-全面详解(学习总结---从入门到深化)

简介: Python办公自动化【Excel查询重复数据、Excel提取身份证号信息、Python操作Excel模块库文档、Python操作Word基础 】(四)-全面详解(学习总结---从入门到深化)

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 中文

https://openpyxl.readthedocs.io/en/stable/ 英文/可翻译

http://www.python-excel.org/ 汇总网站


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()
目录
相关文章
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
29天前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
103 11
|
3月前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
3月前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
156 1
|
3月前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
3月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
79 4
|
4月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
99 4
|
4月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。

推荐镜像

更多