python对办公文档处理

对于经常处理文件的人来说,应该经常使用offic或者wps这样的文件处理工具吧。那么我们可以使用python对办公文档处理吗?答案肯定是可以的,哈哈哈哈哈~ 在python中我们有Pillow,xlrd,xlwt,python-docx,openpyxl,win32com等这些办公自动化的库,废话不多说直接开始吧,哈哈哈哈哈~

1.Pillow库进行图像文件处理

说到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()

2.openpyxl库对Excel表格的自动化处理

说到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库比较重要,而且内容比较多,所以这里只做简单的介绍,后面会有单独的文章详细介绍它,哈哈哈哈哈~

 3.Python-docx库对Word的自动化处理

说到Python-docx,那么首先要知道怎么安装,安装命令如下:

pip install python-docx

但安装时有可能出现下图的错误:

python对办公文档处理_第1张图片

那么我们可以通过​​​​​​卸载 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)

 4.PyPDF2库对 PDF的自动化处理

说到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)

5.python-pptx库对 pptx的自动化处理

说到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)

6.win32com库自动化处理

说到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库进行详细的介绍,敬请期待~哈哈哈哈哈哈~

python对办公文档处理_第2张图片

你可能感兴趣的:(python,python,开发语言,人工智能,后端,机器学习)