对于经常处理文件的人来说,应该经常使用offic或者wps这样的文件处理工具吧。那么我们可以使用python对办公文档处理吗?答案肯定是可以的,哈哈哈哈哈~ 在python中我们有Pillow,xlrd,xlwt,python-docx,openpyxl,win32com等这些办公自动化的库,废话不多说直接开始吧,哈哈哈哈哈~
说到Pillow,那么首先要知道怎么安装,安装命令如下:
pip install pillow
Pillow是Python图像处理库PIL发展出来的一个分支,他主要完成图像压缩和图像处理两方面功能需求:
图像归档:对图像进行批处理、生成图像预览、图像格式转换等
图像处理:图像基本处理、像素处理、颜色处理等
其实Pillow最为重要的一个类是Image类,读取和处理图像都可以通过该类来完成。下面简单该类的一些常用方法和属性:
方法 | 描述 |
Image.open(filename) | 加载图像文件 |
Image.new(mode, size, color) | 创建一个新的图像 |
Image.open(StringIO.StringIO(buff)) | 从字符串中获取图像 |
Image.frombytes(mode, size, data) | 根据像素点data创建图像 |
Image.verify() | 检查图像文件的完整性 |
Image.save(filename, format) | 保存图像,filename文件名,format图片格式 |
Image.convert(mode) | 把图像转换为需要的模式 |
Image.thumbnail(size) | 创建图像压缩图,size为压缩图的大小 |
Image.resize(size) | 根据size大小生成图像副本 |
Image.rotate(angle) | 根据angle角度旋转图像,返回副本 |
Image.point( func) |
根据func函数对每个像素进行运算,返回副本 |
Image.split() | 提取RGB图像的每个颜色通道,返回副本 |
Image.merge(mode, bands) | 合并通道,采用mode色彩,bands为新的颜色通道 |
Image.crop(left, up, right, below) | 对图像进行切割 |
Image.show() | 图像显示 |
Image.paste(img2,box=none,mask=none) | 把img2图像粘贴在Image图像中的box位置 |
Image.transpose(rotate) | 转置图像 |
属性 | 描述 |
Image.format |
标识图像格式或者来源,非文件读取,值为None |
Image.mode | 图像色彩模式,“L"灰度,”RGB“真彩色,”CMYK“出版图像 |
Image.size | 图像的宽和高,单位为像素(px),返回值是二元元组(tuple) |
说到这里可能有小伙伴就会问,那有没有其他类呢?哈哈哈哈~当然有啦~ 比如要对图像进行过滤或者增强的需求的,那么PIL库中提供了ImageFilter类和ImageEnhance类,这两个类可以调整色彩度,亮度,对比度,锐化等功能,下面给出常用方法:
方法 | 描述 |
ImageEnhance.enhance(factor) | 对选择属性增强factor倍 |
ImageEnhance.Color(m) | 调整图像的颜色平衡 |
ImageEnhance.Contrast(m) | 调整图像的对比度 |
ImageEnhance.Brightness(m) | 调整图像的亮度 |
ImageEnhance.Sharoness(m) | 调整图像的锐度 |
ImageFilter.BLUR | 图像模糊效果 |
ImageFilter.CONTOUR | 图像轮廓效果 |
ImageFilter.DETAIL | 图像细化效果 |
ImageFilter.EDGE_ENHANCE | 图像边界加强效果 |
ImageFilter.EDGE_ENHANCE_MORE | 图像阈值边界加强效果 |
ImageFilter.EMBOSS | 图像浮雕效果 |
ImageFilter.FIND_EDGES | 图像边界效果 |
ImageFilter.SMOOTH | 图像平滑效果 |
ImageFilter.SMOOTH_MORE | 图像阈值平滑效果 |
ImageFilter.SHARPEN | 图像锐化效果 |
上面说了那么的方法,那么怎么使用呢? 哈哈哈哈~废话不多说,直接举例子:
#图片处理
from PIL import Image
from PIL import ImageFilter
from PIL import ImageEnhance
img = Image.open("1.jpg")
print(img.format) # 输出图片基本信息
print(img.mode)
print(img.size)
img_resize = img.resize((256,256)) # 调整尺寸
img_resize.save("resize1.jpg")
img_rotate = img.rotate(45) # 旋转
img_rotate.save("rotate1.jpg")
om=img.convert('L') # 灰度处理
om.save('gray1.jpg')
om = img.filter(ImageFilter.CONTOUR) # 图片的轮廓
om.save('contour1.jpg')
om = ImageEnhance.Contrast(img).enhance(10) # 对比度为初始的10倍
om.save('gencontrast1.jpg')
om.transpose(Image.FLIP_LEFT_RIGHT).show()
om.thumbnail(128, 128).show()
说到openpyxl,那么首先要知道怎么安装,安装命令如下:
pip install openpyxl
openpyxl模块主要是让我们可以在python程序中轻松的读取和修改Excel表格的数据,下面举个例子:
#读取excel表格数据
from openpyxl.reader.excel import workbook
def readXlsxFile(path):
file = workbook(filename=path)
print(file.get_sheet_names)
sheets = file.get_sheet_names()
sheet = file.get_sheet_by_name(sheets[0])
for lineNum in range(1, sheet.max_row + 1):
lineList = []
print(sheet.max_row, sheet.max_column)
for columnNum in range(1, sheet.max_column + 1):
# 拿数据
value = sheet.cell(row=lineNum,column=columnNum).value
if value != None:
lineList.append(value)
print(lineList)
path = "1.xlsx"
readXlsxFile(path)
由于openpyxl库比较重要,而且内容比较多,所以这里只做简单的介绍,后面会有单独的文章详细介绍它,哈哈哈哈哈~
说到Python-docx,那么首先要知道怎么安装,安装命令如下:
pip install python-docx
但安装时有可能出现下图的错误:
那么我们可以通过卸载 pip uninstall lxml,之后安装>pip install lxml==3.7.3,即可修复,如图:
利用python-docx模块,Python可以创建和修改Word文档,它允许你通过插入文本、填写表格并将图像自动渲染到报告中来自动生成文档。代码如下:
import docx
doc = docx.Document('/home/abel/test.docx')
paras = doc.paragraphs
text_in_doc =[]
for each_p in paras:
text_in_doc.append(each_p.text)
说到PyPDF2,那么首先要知道怎么安装,安装命令如下:
pip install PyPDF2
利用PyPDF2库,我们能够拆分、合并、裁剪和转换 PDF 文件的页面;还可以向 PDF 文件添加自定义数据、查看选项和密码;可以从 PDF 中检索文本和元数据,也可以将整个文件合并在一起。
#PDF添加水印练习
import PyPDF2
# 打开需要添加水印的PDF
reader1 = PyPDF2.PdfFileReader('1.pdf')
# 准备水印文件
reader2 = PyPDF2.PdfFileReader('2.pdf')
# 获取水印文件
walter_page = reader2.getPage(0)
# 准备空PDF用来存放新的PDF
new_pdf = PyPDF2.PdfFileWriter()
for page_num in range(reader1.getNumPages()):
page = reader1.getPage(page_num) #依次获取每页内容
page.mergePage(walter_page) #为每一页添加水印
new_pdf.addPage(page) #将添加好水印的文件写入空的PDF
f = open('32.pdf','wb') #保存
new_pdf.write(f)
说到python-pptx,那么首先要知道怎么安装,安装命令如下:
pip install python-pptx
python-pptx 是一个用于创建和更新 PowerPoint (.pptx) 文件的 Python 库。通过它我们可以让数据库内容生成自定义 PowerPoint 演示文稿。
# 获取某一页Slide中的内容
from pptx import PPT
prs = PPT('1.pptx')
for i, slide in enumerate(prs.slides):
if i == 4:
for shape in slide.shapes:
if shape.has_text_frame:
text_frame = shape.text_frame
print(text_frame.text)
说到win32com,那么首先要知道怎么安装,安装命令如下:
pip install pypiwin32
其实说到这个库,那更加了不得了,win32com 模块可以为 Python 提供调用 windows 底层组件对 word 、Excel、PPT、PDF 等进行操作的功能。
#创建word文件
import win32com
import win32com.client
import os
def makeWordFile(path, name):
word = win32com.client.Dispatch("Word.Application")
# 让文档可见
word.Visible = True
# 创建文档
doc = word.Documents.Add()
# 写内容从头开始写
r = doc.Range(0, 0)
r.InsertAfter("你好," + name + "\n")
r.InsertAfter("python\n")
# 存储文件
doc.SaveAs(path)
doc.Close()
word.Quit()
names = ["张三", "李四"]
for name in names:
path = os.path.join(os.getcwd(), name)
makeWordFile(path, name)
其实说了那么多,其实本章只是对办公文档处理所用的库简单的介绍一下,因为每个库的内容都比较多而且重要。所以后面会有相关的章节对 python-docx,openpyxl,win32com库进行详细的介绍,敬请期待~哈哈哈哈哈哈~