Python八个自动化办公的技巧

目录
  • 导语
  • 1、Word文档doc转docx
    • 1.1 导入工具包
    • 1.2 获取文件夹下面所有doc文件明细
    • 1.3 转换文件
  • 2、文字地址批量转经纬度
    • 2.1 导入工具包
    • 2.2 定义转换函数
    • 2.3 地址转换
  • 3、经纬度计算距离
    • 3.1 导入工具包
    • 3.2 读取数据
    • 3.3 计算距离
  • 4、百度经纬度转高德经纬度
    • 4.1 工具包
    • 4.2 定义函数
    • 4.3 单个转换
    • 4.4 批量转换
  • 5、Excel文件批量合并
    • 5.1 工具包
    • 5.2 获取文件列表
    • 5.3 转换存储数据
  • 6、Word文件批量转pdf
    • 6.1 导入工具包​​​​​​​
    • 6.2 单个转换
    • 6.3 批量转换​​​​​​​
  • 7、批量读取word中表格数据
    • 7.1工具包安装
    • 7.2 不规范的表格​​​​​​​
    • 7.3 规范数据​​​​​​​
    • 7.4 批量读取​​​​​​​
  • 8 用outlook批量发邮件
    • 8.1 导入工具包​​​​​​​
    • 8.2 读取数据
    • 8.3 发送邮件

导语

哈喽吖铁汁萌!今天这期就给大家介绍几个我用到的办公室自动化技巧,可以瞬速提高办公效率。有需要的可以往下滑了

1、Word文档doc转docx

去年想参赛一个数据比赛, 里面的数据都是doc格式, 想用python-docx 读取word文件中的数据, 但是python-docx只支持docx格式, 所以研究了这两种格式的转换。

1.1 导入工具包

import os
from win32com import client as wc

1.2 获取文件夹下面所有doc文件明细

# 路径
path="C:/Users/yyz/Desktop/python办公技巧/data/doc转docx/"   # 根据自己电脑文件修改

# 定义空list,存放文件绝对路径
files = []
for file in os.listdir(path):
    if file.endswith(".doc"):
        files.append(path+file)
files

1.3 转换文件

 # 运行word程序
word = wc.Dispatch("Word.Application")
# for循环
i = 0
for file in files:
    try:
        doc = word.Documents.Open(file)    #打开word文件
        doc.SaveAs("{}x".format(file), 12)   #另存为后缀为".docx"的文件,其中参数12指docx文件
        doc.Close()  #关闭原来word文件
        print(file +':转换成功')
        i +=1
    except:
        print(file +':转换[不成功]')
        files.append(file)  # 若读取文件报错, 则将文件名称添加到files列表中重新读取
        pass
print('转换文件%i个'%i)
# 退出word
word.Quit()

2、文字地址批量转经纬度

工作中地址转经纬度会用在做地图可视化或者计算距离方面。

2.1 导入工具包

# 导入工具包
import pandas as pd
import json
from urllib.request import urlopen, quote
import requests

2.2 定义转换函数

# 定义函数
def getlnglat(address):
    url = 'http://api.map.baidu.com/geocoding/v3/'
    output = 'json'
    ak = "自己申请的api"   # 百度地图API, 需要自己申请
    address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
    uri = url + '?' + 'address=' + address  + '&output=' + output + '&ak=' + ak  +'&callback=showLocation%20'+'//GET%E8%AF%B7%E6%B1%82'
    res=requests.get(uri).text
    temp = json.loads(res) # 将字符串转化为json
    lat = temp['result']['location']['lat']
    lng = temp['result']['location']['lng']
    return lng, lat   # 经度 longitude,纬度 latitude,

2.3 地址转换

2.3.1 单个地址转换

# 单个地址转换
getlnglat('北京市朝阳区高碑店地区办事处高井村委会')
(116.52784003604923, 39.91806508560947)

2.3.2 批量地址转换

# 读取数据
data = pd.read_excel('C:/Users/yyz/Desktop/python办公技巧/data/地址信息.xlsx')
data

data['经度'] = ''
data['纬度'] = ''
for i in range(data.shape[0]):
    try:
        data.iloc[i,2] = getlnglat(data.iloc[i,1])[0] # 经度 将第i行,第2列的地址(列索引为1)转换为经纬度,并将经度赋值给第i行,第3列(列索引为2)
        data.iloc[i,3] = getlnglat(data.iloc[i,1])[1] # 纬度
    except:
        pass
    #print(i)
data

3、经纬度计算距离

安装工具包

pip install geopy

3.1 导入工具包

from geopy.distance import geodesic

3.2 读取数据

# 读取数据
data = pd.read_excel('C:/Users/yyz/Desktop/python办公技巧/data/经纬度计算距离.xlsx')
data

3.3 计算距离

 # 将经纬度赋值给变量,简化
wd1 = data['纬度1'].tolist()
jd1 = data['经度1'].tolist()
wd2 = data['纬度2'].tolist()
jd2 = data['经度2'].tolist()

lis1 = []
for i in range(len(data)):
    j= geodesic((wd1[i],jd1[i]), (wd2[i],jd2[i])).km   # 纬度 经度  纬度 经度
    lis1.append(j)
    #print(i)

data['距离'] = lis1
data

4、百度经纬度转高德经纬度

公司有2个系统,用的坐标系不一样, 有时候需要转换一下

4.1 工具包

 # 导入工具包
import math
import pandas as pd

4.2 定义函数

# 定义转换函数
def bdToGaoDe(lon,lat):
    PI = 3.14159265358979324 * 3000.0 / 180.0
    x = lon - 0.0065
    y = lat - 0.006
    z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * PI)
    theta = math.atan2(y, x) - 0.000003 * math.cos(x * PI)
    lon = z * math.cos(theta)
    lat = z * math.sin(theta)
    return lon,lat

4.3 单个转换

# 单个转换
bdToGaoDe(116.512885, 39.847469)
(116.50647396357492, 39.84120409781157)

4.4 批量转换

# 读取数据
data = pd.read_excel('C:/Users/yyz/Desktop/python办公技巧/data/百度经纬度转高德.xlsx')
data.head()

wd = data['纬度'].tolist()
jd = data['经度'].tolist()
# 定义一个空列表
li1 = []
for i in range(len(data)):
    j  = bdToGaoDe(jd[i],wd[i])
    li1.append(j)
    
li1
data['经度_re'] = [i[0] for i in li1]
data['纬度_re'] = [i[1] for i in li1]
data.head()

5、Excel文件批量合并

5.1 工具包

# 导入工具包
import pandas as pd
import os

5.2 获取文件列表

 # 设置文件路径
path = 'C:/Users/yyz/Desktop/python办公技巧/data/数据合并/'
# 空列表, 用于存放文件路径
files = []
for file in os.listdir(path):
    if file.endswith(".xlsx"):
        files.append(path+file)

# 查看列表
files

5.3 转换存储数据

 # 定义一个空的dataframe
data = pd.DataFrame()  

# 遍历所有文件
for file in files:
    datai = pd.read_excel(file)
    datai_len = len(datai)
    data = data.append(datai)   # 添加到总的数据中
    print('读取%i行数据,合并后文件%i列, 名称:%s'%(datai_len,len(data.columns),file.split('/')[-1]))
    # 查看是否全部读取,格式是否出错
# 重置索引
data.reset_index(drop=True,inplace=True)

6、Word文件批量转pdf

只能转docx文件,转doc文件会报错, 工具包安装

pip install docx2pdf

6.1 导入工具包​​​​​​​

# 安装工具包:
# 导入工具包
from docx2pdf import convert
import os

6.2 单个转换

 # 单个转换
convert("c:/users/yyz/desktop/魔方公式.docx", "c:/users/yyz/desktop/excel笔记.pdf")

6.3 批量转换​​​​​​​

# 文件位置
path = 'C:/Users/yyz/Desktop/python办公技巧/data/word转pdf/'
# 定义空list,存放文件列表
files = []
for file in os.listdir(path):
    if file.endswith(".docx"):
        files.append(path+file)
files
for file in files:
   convert(file,file.split('.')[0]+'.pdf')
   print(file+'转换成功')

7、批量读取word中表格数据

7.1工具包安装

pip install python-docx
# 读取word文件
doc = docx.Document('C:/Users/yyz/Desktop/python办公技巧/data/word信息.docx')
# 获取文档中所有表格对象的列表
biaoges = doc.tables 

7.2 不规范的表格​​​​​​​

cells = biaoges[1]._cells
cells_lis = [[cell.text for cell in cells]]

import pandas as pd
import numpy as np
datai = pd.DataFrame(cells_lis)
datai = datai[[1,3,7,9,14,16,19,21]]
datai.columns = ['姓名','年龄','籍贯','住址','工作单位','电话','是否党员','出生日期']
datai

7.3 规范数据​​​​​​​

# 获取第1个表格行丨
rowi = len(biaoges[0].rows)
rowi
# 定义空列表
lis1 = []
# for循环获取第一个表的数据
for i in range(1,rowi):  # 从第2行开始循环
    lis1.append([biaoges[0].cell(i,0).text,
                 biaoges[0].cell(i,1).text,
                 biaoges[0].cell(i,2).text,
                 biaoges[0].cell(i,3).text,
                 biaoges[0].cell(i,4).text])
# 创建一个dataframe
data1 = pd.DataFrame(lis1,columns=['日期','品类','数量','价格','金额'])
data1

7.4 批量读取​​​​​​​

import pandas as pd
import os
os.chdir('C:/Users/yyz/Desktop/python办公技巧/data/word信息/')
lis1=[]
for file in os.listdir('.'):
    if file.endswith('.docx'):
        doc = docx.Document('./'+file)
        biaoges = doc.tables
        rowi = len(biaoges[0].rows)
        for i in range(1,rowi):
            lis1.append([biaoges[0].cell(i,0).text,
                     biaoges[0].cell(i,1).text,
                     biaoges[0].cell(i,2).text,
                     biaoges[0].cell(i,3).text,
                     biaoges[0].cell(i,4).text])
# 创建dataframe
data1 = pd.DataFrame(lis1,columns=['日期','品类','数量','价格','金额'])
data1

8 用outlook批量发邮件

8.1 导入工具包​​​​​​​

import win32com.client as win32
import pandas as pd

8.2 读取数据

# 读取数据
data1 = pd.read_excel('C:/Users/yyz/Desktop/python批量发送邮件.xlsx',sheet_name='发送邮件')
data1.fillna('',inplace=True)

8.3 发送邮件

# 运行outlook
outlook = win32.Dispatch("outlook.Application")
# for循环发送文件
for i in range(data1.shape[0]):
    mail = outlook.CreateItem(0)   # 创建一个邮件对象  win32.constants.olMailItem
    mail.To = data1.iloc[i,0]      #收件人
    mail.CC = data1.iloc[i,1]      #抄送人
    mail.Subject = data1.iloc[i,2]    #邮件主题
    mail.HTMLBody = data1.iloc[i,3]           # 邮件正文 html格式
   # mail.Body = data1.iloc[i,3]              # 邮件正文
    mail.Attachments.Add(data1.iloc[i,4])     # 附件
    mail.Send() #发送
    i +=1
print('发送邮件%i份'%i)

python办公自动化的技巧还有很多, python好掌握,能帮助我们提升工作效率,这也是很多非编程人员学习python的原因之一。

以上就是Python七个自动化办公的技巧的详细内容,更多关于Python自动化办公的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python办公自动化PPT批量转换操作

    目录 python-pptx 模块的安装 读取 PPT 写入 PPT 添加一张幻灯片 为幻灯片添加内容 获取幻灯片中的形状: 添加自动形状 占位符 访问占位符 将内容插入占位符 如果要插入表格: 如果要插入图表: PPT 转 Pdf 最后的话 如果你有一堆 PPT 要做,他们的格式是一样的,只是填充的内容不一样,那你就可以使用 Python 来减轻你的负担. PPT 分为内容和格式,用 Python 操作 PPT,就是利用 Python 对 PPT 的内容进行获取和填充,修改 PPT 的格式并不

  • python实现自动化办公邮件合并功能

    经常使用word办公的小伙伴们经常会遇到邮件合并的任务,通常会将数量有限的表格中的信息通过word的邮件合并功能,自动生成word文档,操作熟练的技术员通常不到十分钟就可以合并几十份邮件.那么如果遇到成千上万份的邮件需要合并并且需要各自生成文件呢?一个excel大佬也需要很长时间吧!既然我们很难在excel上追上大佬的脚步,何不另辟蹊径,找一条更适合自己的方法呢? 我是一年多前接触到python自动化办公的,通过进一步的学习,发现平时我们的办公效率可以通过使用python的自动化办公方法从而进一

  • Python办公自动化解决world文件批量转换

    目录 python-docx 库简介 读取 Word 写入 Word Word 转 pdf 最后的话 只要是简单重复的工作,就想办法用 Python 来帮你解决吧,人生苦短,你需要 Python. Word 是办公软件中使用频率非常高的软件之一了,假如你需要调整 100 个 Word 文档的格式保持统一,或者要把 100 个 Word 全部转换为 pdf,那么你就需要 Python 来帮忙了. python-docx 库简介 python-docx 是一个可以对 Word 进行读写操作的第三方库

  • Python办公自动化之教你如何用Python将任意文件转为PDF格式

    一.word转PDF 这里借助Python的docx2pdf去完成转换操作,该库的安装命令如下: pip install docx2pdf 目标:读取文件夹下的全部word文件,然后进行转换,最后保存到对应的文件夹中. 这里辰哥新建两个word文件作为演示,打开其中一个word看看 里面不仅有文字,同时包含有图片 import os from docx2pdf import convert word_path = 'word_path' word_to_pdf = 'word_to_pdf' f

  • Python自动化办公之邮件发送全过程详解

    使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时间.操作前配置(以较为复杂的QQ邮箱举例,其他邮箱操作类似) 单击设置-账号,滑倒下方协议处,开启IMAP/SMTP协议(IMAP,即Internet Message Access Protocol(互联网邮件访问协议),可以通过这种协议从邮件服务器上获取邮件的信息.下载邮件等.IMAP与POP类似,都是一种邮件获取协议.) (ps.开启需要验证) 记住端口号,后续写代码发送邮件时候需要: 生成授权码,前期配置完

  • Python 自动化处理Excel和Word实现自动办公

    今天我来分享一些Python办公自动化的方法,欢迎收藏学习,喜欢点赞支持,欢迎畅聊. Openpyxl Openpyxl 可以说是 Python 中最通用的工具模块了,它使与 Excel 交互pip install openpyxl pip install python-docx简直就像在公园里漫步一样. 有了它,你就可以读写所有当前和传统的 excel 格式,即 xlsx 和 xls. Openpyxl 允许填充行和列.执行公式.创建 2D 和 3D 图表.标记轴和标题,以及大量可以派上用场的

  • Python自动化办公实战案例详解(Word、Excel、Pdf、Email邮件)

    目录 背景 实现过程 1)替换Word模板生成对应邀请函 2)将Word邀请函转化为Pdf格式 4)自动发送邮件 5)完整代码 总结 背景 想象一下,现在你有一份Word邀请函模板,然后你有一份客户列表,上面有客户的姓名.联系方式.邮箱等基本信息,然后你的老板现在需要替换邀请函模板中的姓名,然后将Word邀请函模板生成Pdf格式,之后编辑统一的邀请话术(邮件正文),再依次发送邀请函附件到客户邮箱,你会怎么做? 正常情况下,我们肯定是复制粘贴Excel表格中的客户姓名,之后挨个Word文档进行替换

  • Python办公自动化之Excel介绍

    目录 前言 一.创建.打开excel文件 二.工作表中的数据操作 写数据 读数据 删除数据 三.csv文件转xlsx 前言 Python处理Excel的包是openpyxl,其支持操作的文件类型为:.xlsx, .xlsm, .xltx, .xltm pip install openpyxl 安装完成之后,我们应该了解一下Excel的组成部分,如下图所示: Excel文件中三个对象 workbook: 工作簿,就是一个excel文件sheet:工作表,一个workbook有多个工作表,表名识别,

  • Python八个自动化办公的技巧

    目录 导语 1.Word文档doc转docx 1.1 导入工具包 1.2 获取文件夹下面所有doc文件明细 1.3 转换文件 2.文字地址批量转经纬度 2.1 导入工具包 2.2 定义转换函数 2.3 地址转换 3.经纬度计算距离 3.1 导入工具包 3.2 读取数据 3.3 计算距离 4.百度经纬度转高德经纬度 4.1 工具包 4.2 定义函数 4.3 单个转换 4.4 批量转换 5.Excel文件批量合并 5.1 工具包 5.2 获取文件列表 5.3 转换存储数据 6.Word文件批量转pd

  • Python 库 PySimpleGUI 制作自动化办公小软件的方法

    目录 1 PySimpleGUI安装 2 PySimpleGUI制作简易弹窗界面 2.1 两种界面设计模式 2.2 制作弹窗 2.3 文字内容弹窗 2.4 获取用户输入的弹窗 2.5 文件选择弹出窗口 2.6 文件夹选择窗口 2.7 进度条弹窗 3 制作简易压缩软件 3.1 功能需求 3.2 功能拆解 3.3 全部代码 Python 在运维和办公自动化中扮演着重要的角色,PySimpleGUI 是一款很棒的自动化辅助模块,让你更轻松的实现日常任务的自动化. 1 PySimpleGUI安装 在命令

  • python自动化办公操作PPT的实现

    1.python-pptx模块简介 使用python操作PPT,需要使用的模块就是python-pptx,下面来对该模块做一个简单的介绍.这里提前做一个说明:python操作PPT,最好是我们提前设计好自己的一套样式,然后利用进行python进行内容的获取和填充(最主要的功能!),最好是不用使用python代码操作PPT的格式,格式的修改肯定不如我们直接在PPT中修改方便. 可以创建.修改PPT(.pptx)文件 需要单独安装,不包含在Python标准模块里 python-pptx官网介绍:ht

  • 教你怎么用Python处理excel实现自动化办公

    一.介绍 实现的是把某个文件夹下的所有文件名提取出来,放入一个列表,在与excel中的某列进行对比,如果一致的话,对另一列进行操作,比如我们在统计人员活动情况的时候,对参加的人需要进行记录. 二.步骤 代统计名单 比如下面这个目录是参与活动的人员名单,每个文件夹为每个人参与活动的相关资料,有些目录是很多人一起参与一个活动,这个时候我要把文件遍历,把名字输入到一个列表中. 相关代码如下 # 保存指定目录下文件名到列表 def Save_name(dirPath): filePath = dirPa

  • 五个方便好用的Python自动化办公脚本的实现

    目录 1.自动化阅读网页新闻 2.自动生成素描草图 3.自动发送多封邮件 4.自动化数据探索 5.自动桌面提示 小结 相比大家都听过自动化生产线.自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作效率. 编程世界里有各种各样的自动化脚本,来完成不同的任务. 尤其Python非常适合编写自动化脚本,因为它语法简洁易懂,而且有丰富的第三方工具库. 这次我们使用Python来实现几个自动化场景,或许可以用到你的工作中. 1.自动化阅读网页新闻 这个脚本能够实现从网页中

  • Python自动化办公之群发邮件案例详解

    目录 背景 实现过程 总结 背景 想象一下,现在你有一份Word邀请函模板,然后你有一份客户列表,上面有客户的姓名.联系方式.邮箱等基本信息,然后你的老板现在需要替换邀请函模板中的姓名,然后将Word邀请函模板生成Pdf格式,之后编辑统一的邀请话术(邮件正文),再依次发送邀请函附件到客户邮箱,你会怎么做? 正常情况下,我们肯定是复制粘贴Excel表格中的客户姓名,之后挨个Word文档进行替换,之后将Word转Pdf格式,然后复制Excel表格中的邮箱进行发送编辑好的邮件正常,之后附上邀请函附件,

  • Python自动化办公之Excel拆分与自动发邮件

    目录 需求 需求解析 代码实现 需求 需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户 需求解析 大致的流程就是上图,先拆分 Excel 数据,提取出对应的邮件地址和用户的数据信息,再自动添加到邮件的附件当中 代码实现 首先我们先来看下我们手中 Excel 的数据形式是怎么样的 import datetime import os import shutil from p

随机推荐