python自动化高效办公第二期,带你项目实战{excel数据处理批量化生成word模板pdf和ppt等自动化操作}
Posted 汀、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python自动化高效办公第二期,带你项目实战{excel数据处理批量化生成word模板pdf和ppt等自动化操作}相关的知识,希望对你有一定的参考价值。
相关文章和数据源:
Python自动化办公--Pandas玩转Excel数据分析【二】
Python自动化办公--Pandas玩转Excel数据分析【三】
python处理Excel实现自动化办公教学(含实战)【一】
python处理Excel实现自动化办公教学(含实战)【二】
python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】
python入门之后须掌握的知识点(模块化编程、时间模块)【一】
python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【二】
spandas玩转excel码源.zip-数据挖掘文档类资源-CSDN下载
Python自动化办公(2021最新版!有源代码,).zip-
Python自动化办公(可能是B站内容最全的!有源代码,).zip-
上面是对应码源,图方便的话可以直接下载都分类分好了,当然也可以看文章。
1.知识巩固excel
这个系列文章主要以实例为主,学会每个demo,活学活用,办公效率提升飞快!
1.1 xlrd+xlwt读写excel
#安装命令:
pip install xlrd
pip install xlwt
我们在读取文件的时候,excel的列是字母我们不容易直观看出来是第几列,下面对excel进行设置。
操作如下
import xlrd
# 打开excel
xlsx = xlrd.open_workbook('7月新.xls')
sheet = xlsx.sheet_by_index(0)
data = sheet.cell_value(5, 1)
print(data)
# for i in xlsx.sheet_names():
# print(i)
# table = xlsx.sheet_by_name(i)
# print(table.cell_value(3, 3))
# 通过sheet名查找:xlsx.sheet_by_name("7月下旬入库表")
# 通过索引查找:xlsx.sheet_by_index(3)
# print(table.cell_value(0, 0))
#单元格读取方式
print(sheet.cell_value(1, 2))
print(sheet.cell(0, 0).value)
print(sheet.row(0)[0].value)
# for i in range(0, xlsx.nsheets):
# sheet = xlsx.sheet_by_index(i)
# print(sheet.name)
# print(sheet.cell_value(0, 0))
#
# # 获取所有sheet名字:xlsx.sheet_names()
# # 获取sheet数量:xlsx.nsheets
#
# for i in xlsx.sheet_names():
# print(i)
# table = xlsx.sheet_by_name(i)
# print(table.cell_value(3, 3))
import xlwt
# 新建工作簿
new_workbook = xlwt.Workbook()
# 新建sheet
worksheet = new_workbook.add_sheet('new_test')
# 新建单元格,并写入内容-行列
worksheet.write(1, 2, 'test')
# 保存
new_workbook.save('test.xls')
1.2 xlutils设置格式
xlutils整体没有pandas设置来的方便
from xlutils.copy import copy
import xlrd
import xlwt
# 安装:pip install xlutils
tem_excel = xlrd.open_workbook('日统计.xls', formatting_info=True) #格式信息打开
tem_sheet = tem_excel.sheet_by_index(0)
new_excel = copy(tem_excel)
new_sheet = new_excel.get_sheet(0)
style = xlwt.XFStyle()
# 字体
font = xlwt.Font()
font.name = '微软雅黑'
font.bold = True
# 18*20
font.height = 360
style.font = font
# 边框:细线==THIN
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders
# 对齐
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style.alignment = alignment
new_sheet.write(2, 1, 12)
new_sheet.write(3, 1, 18)
new_sheet.write(4, 1, 19)
new_sheet.write(5, 1, 15)
# new_sheet.write(2, 1, 12, style)
# new_sheet.write(3, 1, 18, style)
# new_sheet.write(4, 1, 19, style)
# new_sheet.write(5, 1, 15, style)
new_excel.save('填写.xls')
1.3 自动生成统计报表【案例一:分数统计】
import xlrd
import xlwt
# 读取excel文件
xlsx = xlrd.open_workbook('三年二班(各科成绩单).xls')
# 选择指定sheet
sheet = xlsx.sheet_by_index(0)
all_data = []
# 统计共有多少学生,并去重
num_set = set()
for row_i in range(1, sheet.nrows):
num = sheet.cell_value(row_i, 0)
name = sheet.cell_value(row_i, 1)
grade = sheet.cell_value(row_i, 3)
student =
'num': num,
'name': name,
'grade': grade,
all_data.append(student)
num_set.add(num)
# print(all_data)
# print(len(all_data))
# print(len(num_set))
# 计算总分
sum_list = []
for num in num_set:
name = ''
sum = 0
for student in all_data:
# print(student['num'])
# print(num)
if num == student['num']:
sum += student['grade']
name = student['name']
sum_stu =
'num': num,
'name': name,
'sum': sum
sum_list.append(sum_stu)
print(sum_list)
# 写入新的excel
# 新建工作簿
new_workbook = xlwt.Workbook()
# 新建sheet
worksheet = new_workbook.add_sheet('2班')
# 新建单元格,并写入内容
# 写入第一列的内容
worksheet.write(0, 0, '学号')
worksheet.write(0, 1, '姓名')
worksheet.write(0, 2, '总分')
# 自动写入后面的内容
for row in range(0,len(sum_list)):
worksheet.write(row+1,0,sum_list[row]['num'])
worksheet.write(row+1,1,sum_list[row]['name'])
worksheet.write(row+1,2,sum_list[row]['sum'])
# 保存
new_workbook.save('2班学生总分.xls')
1.4 xlsxwriter 和openpyxl
xlwt会遇到不支持超过列256的表格
# import xlwt
#
# workbook = xlwt.Workbook()
# sheet0 = workbook.add_sheet('sheet0')
# for i in range(0,300):
# sheet0.write(0,i,i)
# workbook.save('num.xls')
# 不带格式
import xlsxwriter as xw
workbook = xw.Workbook('number.xlsx')
sheet0 = workbook.add_worksheet('sheet0')
for i in range(0,300):
sheet0.write(0,i,i)
workbook.close()
# 性能不稳定
import openpyxl
workbook = openpyxl.load_workbook('number.xlsx')
sheet0 = workbook['sheet0']
sheet0['B3']= '2'
sheet0['C2']= '4'
sheet0['D7']= '3'
workbook.save('num_open.xlsx')
1.5 xlwings和pandas
pandas在第一期已经详细讲解过,参考相关文章
Python用来处理Excel的全部可用库,以及它们的优缺点
xlwings具有以下优点:
- xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
- 可以和matplotlib以及pandas无缝连接
- 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
- 开源免费,一直在更新
#### 1、打开/新建Excel文档
```python
import xlwings as xw
wb = xw.Book() # 新建一个文档
wb = xw.Book('test.xlsx') # 打开一个已有的文档
```
#### 2、读取/写入数据
```python
sht = wb.sheets['Sheet1'] # 找到指定sheet
print(sht.range('A1').value) # 读取指定单元格的数据,这里读的是A1
sht.range('B1').value = 10 # 给指定的空白单元格赋值,这里赋值的是B1
```
#### 3、保存文件、退出程序
```python
wb.save(r'test.xlsx') #保存Excel文档,命名为test.xlsx,并保存在D盘
wb.close() # 退出程序,该步骤不可省略
```
#### 4、连接pandas处理复杂数据
```python
import pandas as pd
df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
sht.range('A1').value = df
sht.range('A1').options(pd.DataFrame, expand='table').value
```
#### 5、连接**Matplotlib** 画图
```python
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([1, 2, 3, 4, 5])
sht.pictures.add(fig, name='MyPlot', update=True)
1.6 案例实战---把文件名整理到excel中
import os
import xlwt
# 目标文件夹
file_path = 'd:/'
# 取出目标文件夹下的文件名
os.listdir(file_path)
new_workbook = xlwt.Workbook()
sheet = new_workbook.add_sheet('new_dir')
n = 0
for i in os.listdir(file_path):
sheet.write(n,0,i)
n+=1
new_workbook.save('dir.xls')
1.7 案例实战---excel填充画
把一幅画导入到excel中用每个单元格背景色生成原画
# coding: utf-8
from PIL import Image
from xlsxwriter.workbook import Workbook
class ExcelPicture(object):
FORMAT_CONSTRAINT = 65536
def __init__(self, pic_file, ratio=0.5):
self.__pic_file = pic_file
self.__ratio = ratio
self.__zoomed_out = False
self.__formats = dict()
# 缩小图片
def zoom_out(self, _img):
_size = _img.size
_img.thumbnail((int(_img.size[0] * self.__ratio), int(_img.size[1] * self.__ratio)))
self.__zoomed_out = True
# 对颜色进行圆整
def round_rgb(self, rgb, model):
return tuple([int(round(x / model) * model) for x in rgb])
# 查找颜色样式,去重
def get_format(self, color):
_format = self.__formats.get(color, None)
if _format is None:
_format = self.__wb.add_format('bg_color': color)
self.__formats[color] = _format
return _format
# 操作流程
def process(self, output_file='_pic.xlsx', color_rounding=False, color_rounding_model=5.0):
# 创建xlsx文件,并调整行列属性
self.__wb = Workbook(output_file)
self.__sht = self.__wb.add_worksheet()
self.__sht.set_default_row(height=9)
self.__sht.set_column(0, 5000, width=1)
# 打开需要进行转换的图片
_img = Image.open(self.__pic_file)
print('Picture filename:', self.__pic_file)
# 判断是否需要缩小图片尺寸
if self.__ratio < 1:
self.zoom_out(_img)
# 遍历每一个像素点,并填充对应的颜色到对应的Excel单元格
_size = _img.size
print('Picture size:', _size)
for (x, y) in [(x, y) for x in range(_size[0]) for y in range(_size[1])]:
_clr = _img.getpixel((x, y))
# 如果颜色种类过多,则需要将颜色圆整到近似的颜色上,以减少颜色种类
if color_rounding: _clr = self.round_rgb(_clr, color_rounding_model)
_color = '#%02X%02X%02X' % _clr
self.__sht.write(y, x, '', self.get_format(_color))
self.__wb.close()
# 检查颜色样式种类是否超出限制,Excel2007对样式数量有最大限制
format_size = len(self.__formats.keys())
if format_size >= ExcelPicture.FORMAT_CONSTRAINT:
print('Failed! Color size overflow: %s.' % format_size)
else:
print('Success!')
print('Color: %s' % format_size)
print('Color_rounding:', color_rounding)
if color_rounding:
print('Color_rounding_model:', color_rounding_model)
if __name__ == '__main__':
r = ExcelPicture('test.jpg', ratio=0.5)
r.process('0407.xlsx', color_rounding=True, color_rounding_model=5.0)
# 同级目录
效果如下:
原图
下面可以看到有一点糊是因为填充单元格可以当作像素点来考虑
2.自动化处理word
安装库
>pip install python-docx
- python-docx
- 说明文档:https://python-docx.readthedocs.io/en/latest/#api-documentation
2.1 自动生成word【批量化写模板文档】
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
from docx.oxml.ns import qn
import time
price = input('请输入工资调整金额:')
# 全体员工姓名
company_list = ['员工1', '员工1', '员工2', '员工3', '员工4',
'员工5', '员工6', '员工7', '员工8', '员工9', '员工10']
# word和excel可以结合
# excel学习:for
# 当天的日期!
today = time.strftime("%Yy%mm%dd", time.localtime()
).format(y='年', m='月', d='日')
for i in company_list:
document = Document()
# 设置文档的基础字体
document.styles['Normal'].font.name = u'宋体'
# 识别中文
document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
# 建立一个自然段
p1 = document.add_paragraph()
# 对齐方式为居中,没有这句的话默认左对齐
p1.alignment = WD_ALIGN_PARAGRAPH.CENTER
run1 = p1.add_run('关于%s工资调整的通知' % (today))
run1.font.name = '微软雅黑'
run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
run1.font.size = Pt(21)
run1.font.bold = True
p1.space_after = Pt(5)
p1.space_before = Pt(5)
p2 = document.add_paragraph()
run2 = p2.add_run(i + ':')
run2.font.name = '宋体'
run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run2.font.size = Pt(16)
run2.font.bold = True
p3 = document.add_paragraph()
run3 = p3.add_run('因为疫情影响,我们很抱歉的通知您,您的工资调整为每月%s元,特此通知' % price)
run3.font.name = '宋体'
run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run3.font.size = Pt(14)
p4 = document.add_paragraph()
p4.alignment = WD_ALIGN_PARAGRAPH.RIGHT
run4 = p4.add_run('人事:王小姐 电话:686868')
run4.font.name = '宋体'
run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run4.font.size = Pt(14)
run4.font.bold = True
document.save('%s-工资调整通知.docx' % i)
其中在读取员工信息这块可以和excel结合。
2.2 批量化写模板文档【并添加图片和表格】
新的要求,要求小杨在通知函上方加上图片红头,价格数据以表格形式展示。并在第二页加
上广告【插入分页符】。
效果如下:
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
from docx.oxml.ns import qn
from docx.shared import Inches
import time
price = input('请输入工资调整金额:')
company_list = ['员工1', '员工1', '员工2', '员工3', '员工4',
'员工5', '员工6', '员工7', '员工8', '员工9', '员工10', ]
today = time.strftime("%Yy%mm%dd", time.localtime()
).format(y='年', m='月', d='日')
for i in company_list:
document = Document()
# 设置文档的基础字体
document.styles['Normal'].font.name = u'宋体'
document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
# 红头文件加入文件
document.add_picture('title002.jpg', width=Inches(6))
# 建立一个自然段
p1 = document.add_paragraph()
# 对齐方式为居中,没有这句的话默认左对齐
p1.alignment = WD_ALIGN_PARAGRAPH.CENTER
run1 = p1.add_run('关于%s工资调整的通知' % (today))
run1.font.name = '微软雅黑'
run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
run1.font.size = Pt(21)
run1.font.bold = True
p1.space_after = Pt(5)
p1.space_before = Pt(5)
p2 = document.add_paragraph()
run2 = p2.add_run(i + ':')
run2.font.name = '宋体'
run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run2.font.size = Pt(16)
run2.font.bold = True
p3 = document.add_paragraph()
run3 = p3.add_run('因为疫情影响,我们很抱歉的通知您,您的工资调整为每月%s元,特此通知。' % price)
run3.font.name = '宋体'
run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run3.font.size = Pt(14)
#添加表格
table = document.add_table(rows=2, cols=2, style='Table Grid')#默认格式
# 合并单元格
table.cell(0, 0).merge(table.cell(0, 1)) #坐上合并到右下
table_run1 = table.cell(0, 0).paragraphs[0].add_run('签名栏')
table_run1.font.name = '黑体'
table_run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
table.cell(0, 0).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
table.cell(1, 0).text = i
table.cell(1, 0).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
p4 = document.add_paragraph()
p4.alignment = WD_ALIGN_PARAGRAPH.RIGHT
run4 = p4.add_run('人事:王小姐 电话:686868')
run4.font.name = '宋体'
run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run4.font.size = Pt(14)
run4.font.bold = True
#插入分页符
document.add_page_break()
p5= document.add_paragraph()
run4=p5.add_run("此处是广告")
document.save('%s-工资调整通知.docx' % i)
2.3 读取word文档【 文字+表格混合文档:】
from docx import Document
document = Document('pure.docx')
all_paragraphs = document.paragraphs
for p in all_paragraphs:
print(p.text)
# excel写入
如果word里是表格呈现读取如下:
文字+表格形式:
word基本格式问题:把word重名后缀为zip的文件,打开看到里面有xml的格式文件
导入zipfile库解压文件,设置格式只读取我们需要的文字:进行组合。
import zipfile
word_book = zipfile.ZipFile('word_table.docx')
xml = word_book.read("word/document.xml").decode('utf-8')
# print(xml)
xml_list = xml.split('<w:t>')
# print(xml_list)
text_list = []
for i in xml_list:
if i.find('</w:t>') + 1:
text_list.append(i[:i.find('</w:t>')])
else:
pass
text = "".join(text_list)
print(text)
2.4 word转pdf(批量化)
安装库:
pip install pywin32
from win32com.client import Dispatch,constants,gencache
doc_path = 'test.docx'
pdf_path = 'test.pdf'
gencache.EnsureModule('00020905-0000-0000-C000-000000000046',0,8,4)
wd = Dispatch("Word.Application")
doc = wd.Documents.Open(doc_path,ReadOnly=1)
doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
wd.Quit(constants.wdDoNotSaveChanges)
在执行时报错了,下面来说解决方法。
参考网站:win32api pywin32 安装后出现 ImportError: DLL load failed_mengfanteng的博客-CSDN博客
- 找到我们安装python的文件夹,在Lib文件中找到site-packages\\pywin32_system32
- D:\\Program Files (x86)\\Python\\Python36\\Lib\\site-packages\\pywin32_system32
- 把里面的所有的文件复制到:C:\\Windows\\System32
import os
from win32com.client import Dispatch,constants,gencache
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt
from docx.oxml.ns import qn
import time
price = input('请输入工资调整金额:')
# 全体员工姓名
company_list = ['员工1', '员工1', '员工2', '员工3', '员工4', '员工5', '员工6', '员工7', '员工8', '员工9', '员工10' ]
# 当天的日期
today = time.strftime("%Yy%mm%dd", time.localtime()).format(y='年', m='月', d='日')
for i in company_list:
document = Document()
# 设置文档的基础字体
document.styles['Normal'].font.name = u'宋体'
# 识别中文
document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
# 建立一个自然段
p1 = document.add_paragraph()
# 对齐方式为居中,没有这句的话默认左对齐
p1.alignment = WD_ALIGN_PARAGRAPH.CENTER
run1 = p1.add_run('关于%s工资调整的通知' % (today))
run1.font.name = '微软雅黑'
run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
run1.font.size = Pt(21)
run1.font.bold = True
p1.space_after = Pt(5)
p1.space_before = Pt(5)
p2 = document.add_paragraph()
run2 = p2.add_run(i + ':')
run2.font.name = '宋体'
run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run2.font.size = Pt(16)
run2.font.bold = True
p3 = document.add_paragraph()
run3 = p3.add_run('因为疫情影响,我们很抱歉的通知您,您的工资调整为每月%s元,特此通知' % price)
run3.font.name = '宋体'
run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run3.font.size = Pt(14)
p4 = document.add_paragraph()
p4.alignment = WD_ALIGN_PARAGRAPH.RIGHT
run4 = p4.add_run('人事:王小姐 电话:686868')
run4.font.name = '宋体'
run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
run4.font.size = Pt(14)
run4.font.bold = True
document.save('%s-工资调整通知.docx' % i)
doc_path = '%s-工资调整通知.docx' % i
pdf_path = '%s-工资调整通知.pdf' % i
gencache.EnsureModule('00020905-0000-0000-C000-000000000046',0,8,4)
wd = Dispatch("Word.Application")
doc = wd.Documents.Open(doc_path,ReadOnly=1)
doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
wd.Quit(constants.wdDoNotSaveChanges)
time.sleep(10)
3.PDF识别以及读取PDF中文字【pdf合并】
3.1 使用 pdfplumber和PyPDF2
安装库:
pip install pdfplumber
pip install PyPDF2
参考文章:
PDFPlumber使用入门_顺其自然~的博客-CSDN博客_pdfplumber
import PyPDF2
import pdfplumber
def extract_content(pdf_path):
# 内容提取,使用 pdfplumber 打开 PDF,用于提取文本
with pdfplumber.open(pdf_path) as pdf_file:
# 使用 PyPDF2 打开 PDF 用于提取图片
pdf_image_reader = PyPDF2.PdfFileReader(open(pdf_path, "rb"))
print(pdf_image_reader.getNumPages())
content = ''
# len(pdf.pages)为PDF文档页数,一页页解析
for i in range(len(pdf_file.pages)):
print("当前第 %s 页" % i)
# pdf.pages[i] 是读取PDF文档第i+1页
page_text = pdf_file.pages[i]
# page.extract_text()函数即读取文本内容
page_content = page_text.extract_text()
if page_content:
content = content + page_content + "\\n"
print(page_content)
extract_content('静夜思.pdf')
合并pdf
from PyPDF2 import PdfFileReader, PdfFileWriter
def merge_pdfs(paths, output):
pdf_writer = PdfFileWriter()
for path in paths:
pdf_reader = PdfFileReader(path)
for page in range(pdf_reader.getNumPages()):
# 把每张PDF页面加入到这个可读取对象中
pdf_writer.addPage(pdf_reader.getPage(page))
# 把这个已合并了的PDF文档存储起来
with open(output, 'wb') as out:
pdf_writer.write(out)
if __name__ == '__main__':
paths = ['静夜思.pdf', '静夜思.pdf']
merge_pdfs(paths, output='pandas官方文档中文版.pdf')
from PyPDF2 import PdfFileReader, PdfFileWriter
def merge_pdfs(paths, output):
pdf_writer = PdfFileWriter()
for path in paths:
pdf_reader = PdfFileReader(path)
for page in range(pdf_reader.getNumPages()):
# 把每张PDF页面加入到这个可读取对象中
pdf_writer.addPage(pdf_reader.getPage(page))
# 把这个已合并了的PDF文档存储起来
with open(output, 'wb') as out:
pdf_writer.write(out)
if __name__ == '__main__':
paths = ['study.pdf', 'labuladong的算法小抄官方完整版.pdf']
merge_pdfs(paths, output='pandas官方文档中文版.pdf')
3.2 pdfminer(推荐)
读取:
4.ppt自动化操作
python-pptx说明文档
- https://pypi.org/project/python-pptx/
# pip install python-pptx
4..1在ppt中写入文字
from pptx import Presentation
from pptx.util import Inches,Pt
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[1])# 在PPT中插入一个幻灯片
body_shape = slide.shapes.placeholders
# body_shape[0].text = '这是占位符0'
# body_shape[1].text = '这是占位符1'
#
title_shape = slide.shapes.title
title_shape.text = '这是标题'
# subtitle = slide.shapes.placeholders[1] #取出本页第二个文本框
# subtitle.text = '这是文本框'
#
# new_paragraph = body_shape[1].text_frame.add_paragraph()
# new_paragraph.text = '新段落'
# new_paragraph.font.bold = True
# new_paragraph.font.italic = True
# new_paragraph.font.size = Pt(15)
# new_paragraph.font.underline = True
#
left = Inches(2)
top = Inches(2)
width = Inches(3)
height = Inches(3)
#
#
#
textbox = slide.shapes.add_textbox(left,top,width,height)
textbox.text = 'new textbox'
# 如何在文本框里添加第二段文字?
# new_para = textbox.text_frame.add_paragraph()
# new_para.text = '第二段文字'
#
ppt.save('test.pptx')
4.2 在ppt插入图片表格
# pip install python-pptx
from pptx import Presentation
from pptx.util import Inches,Pt
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[1])# 在PPT中插入一个幻灯片
left = Inches(1)
top = Inches(1)
width = Inches(2)
height = Inches(2)
img = slide.shapes.add_picture('img.jpg',left,top,width,height)
rows = 2
cols = 2
left = Inches(1)
top = Inches(1)
width = Inches(4)
height = Inches(4)
table = slide.shapes.add_table(rows,cols,left,top,width,height).table
table.columns[0].width = Inches(1)
table.columns[1].width = Inches(3)
table.cell(0,0).text = '00'
table.cell(0,1).text = '01'
table.cell(1,0).text = '10'
table.cell(1,1).text = '11' #二进制的11,代表十进制的多少?
ppt.save('text.pptx')
以上是关于python自动化高效办公第二期,带你项目实战{excel数据处理批量化生成word模板pdf和ppt等自动化操作}的主要内容,如果未能解决你的问题,请参考以下文章
python自动化高效办公第二期,带你项目实战{excel数据处理批量化生成word模板pdf和ppt等自动化操作}
TFS-CLUB社区 第7期赠书活动〖从零开始利用Excel与Python进行数据分析 自动化办公实战宝典〗等你来拿,参与评论,即可有机获得