导语
哈喽吖铁汁萌!今天这期就给大家介绍几个我用到的办公室自动化技巧,可以瞬速提高办公效率。有需要的可以往下滑了
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 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
如果需要可以点击链接免费领取或者滑到最后扫描二v码
👉[CSDN大礼包:《python学习路线&全套学习资料》免费分享](安全链接,放心点击)
👉Python学习大纲👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python书籍和视频合集👈
👉Python面试刷题👈
👉Python副业兼职路线👈
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以点击链接免费领取或者保存图片到wx扫描二v码免费领取 【保证100%免费
】
👉[CSDN大礼包:《python学习路线&全套学习资料》免费分享](安全链接,放心点击)