Python八个自动化办公的技巧

Bella ·
更新时间:2024-09-20
· 407 次阅读

目录

导语

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自动化办公的资料请关注软件开发网其它相关文章!



自动 自动化 技巧 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号