安装模块

# Word操作库
pip install docx
# Excel操作库
pip install openpyxl
# 打包exe工具
pip install pyinstaller

Word操作

参考地址:https://python-docx.readthedocs.io/en/latest/

  1. 注意事项

    • 只能对openxml规格的docx格式操作
  2. Word内部结构

# 有时候通过公开的方法无法取到数据时,可以考虑用内部的xml结构处理
from docx import Document
doc= Document(path)
body_element = doc._body._body
# 显示文档内部结构
print(body_element.xml)
  1. 实例:获取文档目录
#获取xml的命名空间
def xpath_ns(tree):
"get xml namespace"
nsmap = dict((k, v) for k, v in tree.nsmap.items() if k)
return nsmap doc= Document(path)
body_element = doc._body._body
ns= xpath_ns(body_element)
# 获取目录所在节点
links = body_element.xpath('./w:p/w:hyperlink')
for link in links:
# 获取每一条目录的内容
runs= [Run(r,None) for r in link.xpath('w:r[@w:rsidRPr]',namespaces=ns)]
for r in runs:
# 打印内容
print(r.text)
  1. 实例:读取表格内容
doc= Document(path)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)
  1. 实例:读取段落内容
doc= Document(path)
for g in doc.paragraphs:
for run in g.runs:
print(run.text)

Excel操作

参考地址:https://openpyxl.readthedocs.io/en/stable/usage.html

  1. 实例:格式设置
import openpyxl
from openpyxl.styles import PatternFill, Border, Side, Alignment,Font # 单元格字体
bft=Font(name="Meiryo UI",size=9,bold=True)
# 填充样式
headFill=PatternFill("solid", fgColor="d9d9d9")
# 边框线
thin = Side(border_style="thin", color="000000")
# 边框填充样式
border= Border(top=thin, left=thin, right=thin, bottom=thin)
# 对齐方式
align= Alignment(horizontal="center", vertical="center")
# 改行设置
wraptext= Alignment(vertical="center",wrapText=True) bk= openpyxl.load_workbook(filename="test.xlsx")
oSheet=bk["test"]
# Value设置数据
cell=oSheet.cell(row=row,column=col,value="hello world!")
cell.font=bft
cell.fill= headFill
cell.border= border
cell.alignment= align
#cell.alignment= wraptext
# 固定头三行三列
oSheet.freeze_panes='D4'
bk.save(expath)
bk.close()
  1. 实例:自动列宽

原理就是获取每列最大宽进行设置

import openpyxl

def getMaxLength(max,data):
"比较字符个数返回最大值"
length=len(str(data))
if length > max:
return length
else:
return max book= openpyxl.load_workbook(filename="test.xlsx")
sheet=book["test"]
for col in sheet.columns:
max_length=0
for cell in col:
max_length=getMaxLength(max_length,cell.value)
adjusted_width = (max_length + 2) * 1.2
sheet.column_dimensions[col[0].column_letter].width = adjusted_width

打包exe文件

打包目的:在没有python环境的电脑上也可以运行我们的程序

  1. cmd到py文件目录

    • 确认已经安装pyinstaller
  2. 执行打包
PyInstaller test.py --onefile --noconsole
  • --onefile: 表示打包成一个exe文件
  • --noconsole:表示不显示黑色命令窗口
  1. 执行之后会在目录下生成dist与build文件夹

    dist:文件夹里面的exe文件就是我们需要的exe。

    现在在没有Python环境的电脑也可以执行了。

其他操作

  1. 获取文件夹文件
import glob
files= glob.glob(docxPath+"/*.docx")
  1. 字符串匹配替换
import re
re.sub(r'^[0-9,.]*', "", text)
  1. 获取文件名称
import ntpath
name=ntpath.basename(path)
  1. 判断路径是否为文件
from os.path import isfile
isfile(path)

Python操作Word与Excel并打包的更多相关文章

  1. libreoffice python 操作word及excel文档

    1.开始.关闭libreoffice服务: 开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时 ...

  2. python操作word

    python教程(百度经验) Python 操作Word(Excel.PPT等通用)   import win32comfrom win32com.client import Dispatch, co ...

  3. python操作word、ppt的详解

    python使用win32com的心得   python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎 ...

  4. python操作word(改课文格式)【最终版】

    python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到.心急的可以直接拉到最后看代码,我都加了比较详细的注释. 从8.3号早上9点,到8.8号下午5点半下班,终于把这 ...

  5. 利用Python操作Word文档【图片】

    利用Python操作Word文档

  6. Python操作Word:常用对象介绍

    前面已经介绍过了试用win32com类库来进行Word开发,系列文章<Python操作Word>是继承了前面的文章,所以,你应该先查看前面的文章,其实只有两篇,文章地址列在最下面的参考资料 ...

  7. 最直观的poi的使用帮助(告诉你怎么使用poi的官网),操作word,excel,ppt

    最直观的poi的使用帮助(告诉你怎么使用poi的官网),poi操作word,excel,ppt 写在最前面 其实poi的官网上面有poi的各种类和接口的使用说明,还有非常详细的样例,所以照着这些样例来 ...

  8. python读写word、excel、csv、json文件

    http://blog.csdn.net/pipisorry/article/details/50368044 python读写word文档 (include wps)将word文档转换成txt文档 ...

  9. python操作word入门

    1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: ...

随机推荐

  1. 在Windows中快速配置vim

    vim原本是在Linux中的编辑器,如果使用熟练写代码速度可以远高于其它编辑器 当然很多OI比赛也会要求在Linux中进行 然而: 想学Linux,首先要有一个Linux,但有了Linux,这个直播间 ...

  2. jmeter的正则表达式编辑器

    位置:在后置处理器里面,表示在请求结束或者返回响应结果时发挥作用. 作用:允许用户从服务器的响应中通过使用perl的正则表达式提取值.该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符 ...

  3. Java采用反射技术创建对象后对目标类的成员变量和成员方法进行访问

    实现: package com.ljy; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * * @Class ...

  4. 《Docker从入门到跑路》之多阶段构建

    多阶段构建就是在一个Dokcerfile中定义多个FROM,每个FROM都可以使用不同的基础镜像,并表示开始一个新的构建阶段,我们可以很方便的将一个阶段的文件复制到另外一个阶段中,在最终的阶段保存你需 ...

  5. MODIS系列之NDVI(MOD13Q1)五:NDVI处理流程

    前言:(个人建议) 1.进行数据处理工作,由于通常数据量比较大.所以在个人电脑中,要将基础数据.不断增长的过程数据.结果数据等分门别类,使得简单易找. 2.将重要数据备份,因为在数据处理过程中,由于出 ...

  6. [译]ANDROID 11: BETA 计划

    当我们开始计划 Android 11 的时候,我们没有预料到这些变化会发生在我们所有人身上,几乎遍及世界上的每一个地区. 这些挑战要求我们保持灵活性,寻找新的合作方式,特别是与我们的开发者社区合作. ...

  7. LateX公式表

    转载自xkgjfl 话说为什么LateX公式这么难记 markdown最全数学公式 我们在用markdown写文档时有时候少不了需要插入一些公式,然而markdown公式输入远没有word这么直观,有 ...

  8. (1).Mybatis的创建。配置。映射。dao映射

    https://www.cnblogs.com/zxdup/ 一.Mybatis的创建 1.创建一个新的项目,建议选 Empty Project(空项目), 之后回跳转到Project Structu ...

  9. LDheatmap | SNP连锁不平衡图(LD)可视化,自己数据实现版!

    本文首发于“生信补给站”,https://mp.weixin.qq.com/s/Gl6BChxSYbSHMo9oMpufPg 连锁不平衡图,用来可视化不同SNP之间的连锁程度,前同事间俗称“倒三角”图 ...

  10. 云小课 | WAF反爬虫“三板斧”:轻松应对网站恶意爬虫

    描述:反爬虫是一个复杂的过程,针对爬虫常见的行为特征,WAF反爬虫三板斧——Robot检测(识别User-Agent).网站反爬虫(检查浏览器合法性)和CC攻击防护(限制访问频率)可以全方位帮您解决业 ...