Python操作Word与Excel并打包
安装模块
# Word操作库
pip install docx
# Excel操作库
pip install openpyxl
# 打包exe工具
pip install pyinstaller
Word操作
参考地址:https://python-docx.readthedocs.io/en/latest/
注意事项
- 只能对openxml规格的docx格式操作
Word内部结构
# 有时候通过公开的方法无法取到数据时,可以考虑用内部的xml结构处理
from docx import Document
doc= Document(path)
body_element = doc._body._body
# 显示文档内部结构
print(body_element.xml)
- 实例:获取文档目录
#获取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)
- 实例:读取表格内容
doc= Document(path)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)
- 实例:读取段落内容
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
- 实例:格式设置
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()
- 实例:自动列宽
原理就是获取每列最大宽进行设置
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环境的电脑上也可以运行我们的程序
- cmd到py文件目录
- 确认已经安装pyinstaller
- 执行打包
PyInstaller test.py --onefile --noconsole
- --onefile: 表示打包成一个exe文件
- --noconsole:表示不显示黑色命令窗口
执行之后会在目录下生成dist与build文件夹
dist:文件夹里面的exe文件就是我们需要的exe。
现在在没有Python环境的电脑也可以执行了。
其他操作
- 获取文件夹文件
import glob
files= glob.glob(docxPath+"/*.docx")
- 字符串匹配替换
import re
re.sub(r'^[0-9,.]*', "", text)
- 获取文件名称
import ntpath
name=ntpath.basename(path)
- 判断路径是否为文件
from os.path import isfile
isfile(path)
Python操作Word与Excel并打包的更多相关文章
- libreoffice python 操作word及excel文档
1.开始.关闭libreoffice服务: 开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时 ...
- python操作word
python教程(百度经验) Python 操作Word(Excel.PPT等通用) import win32comfrom win32com.client import Dispatch, co ...
- python操作word、ppt的详解
python使用win32com的心得 python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎 ...
- python操作word(改课文格式)【最终版】
python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到.心急的可以直接拉到最后看代码,我都加了比较详细的注释. 从8.3号早上9点,到8.8号下午5点半下班,终于把这 ...
- 利用Python操作Word文档【图片】
利用Python操作Word文档
- Python操作Word:常用对象介绍
前面已经介绍过了试用win32com类库来进行Word开发,系列文章<Python操作Word>是继承了前面的文章,所以,你应该先查看前面的文章,其实只有两篇,文章地址列在最下面的参考资料 ...
- 最直观的poi的使用帮助(告诉你怎么使用poi的官网),操作word,excel,ppt
最直观的poi的使用帮助(告诉你怎么使用poi的官网),poi操作word,excel,ppt 写在最前面 其实poi的官网上面有poi的各种类和接口的使用说明,还有非常详细的样例,所以照着这些样例来 ...
- python读写word、excel、csv、json文件
http://blog.csdn.net/pipisorry/article/details/50368044 python读写word文档 (include wps)将word文档转换成txt文档 ...
- python操作word入门
1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: ...
随机推荐
- 一个简单的wed服务器SHTTPD(9)————main函数文件,Makefile,头文件
主函数: #include "lcw_shttpd.h" //初始化时服务器的默认配置 extern struct conf_opts conf_para= { "/us ...
- Springboot-WebFlux实现http重定向到https
1 简介 Spring WebFlux是一个新兴的技术,Spring团队把宝都压在响应式Reactive上了,于是推出了全新的Web实现.本文不讨论响应式编程,而是通过实例讲解Springboot W ...
- python——random.sample()的用法
写脚本过程中用到了需要随机一段字符串的操作,查了一下资料,对于random.sample的用法,多用于截取列表的指定长度的随机数,但是不会改变列表本身的排序: list = [0,1,2,3,4] r ...
- 【原创】Linux Mutex机制分析
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- Python词云生成
一.目的 1. 熟悉jieba库和wordcloud库的使用方法: 2. 熟悉文本词频统计和词云生成的基本方法. 二.内容 1. 从网上自行下载一个长篇英文小说,统计并输出该小说中词频最大的TOP 2 ...
- 你知道Spring是怎么解析配置类的吗?
彻底读懂Spring(二)你知道Spring是怎么解析配置类的吗? 推荐阅读: Spring官网阅读系列 彻底读懂Spring(一)读源码,我们可以从第一行读起 Spring执行流程图如下: 如果图片 ...
- java基础篇 之 再探内部类跟final
之前写过一篇文章:从垃圾回收机制解析为什么局部内部类只能访问final修饰的局部变量以及为什么加final能解决问题,经过这两天的学习,发现有些不对,必须再来捋一捋 先看之前的例子: /** * @a ...
- 【Hadoop离线基础总结】Hadoop的架构模型
Hadoop的架构模型 1.x的版本架构模型介绍 架构图 HDFS分布式文件存储系统(典型的主从架构) NameNode:集群当中的主节点,主要用于维护集群当中的元数据信息,以及接受用户的请求,处理用 ...
- RHCSA 第一题 修改root密码
题目要求 请修改系统的root帐号密码为redhat,确保能够使用root帐号登录系统.说明:server0 的IP为172.25.0.11/24desktop0的IP为172.25.0.10/24 ...
- [hdu3507 Print Article]斜率优化dp入门
题意:需要打印n个正整数,1个数要么单独打印要么和前面一个数一起打印,1次打印1组数的代价为这组数的和的平方加上常数M.求最小代价. 思路:如果令dp[i]为打印前i个数的最小代价,那么有 dp[i] ...