我想在不更改格式的情况下更新文本框中的文本。换句话说,我想在更改文本时保留原始文本的原始格式
我可以使用以下内容更新文本,但在此过程中格式已完全更改。
from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
sh.text_frame.paragraphs[0].text = 'MY NEW TEXT'
prs.save("C:\\new_powerpoint.pptx")
Run Code Online (Sandbox Code Playgroud)
如何在保持原始格式的同时更新文本?
我还尝试了以下方法:
from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
p = sh.text_frame.paragraphs[0]
original_font = p.font
p.text = 'NEW TEXT'
p.font = original_font
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Traceback (most recent call last):
File "C:\Codes\powerpoint_python_script.py", line 24, in <module>
p.font = original_font
AttributeError: can't set attribute
Run Code Online (Sandbox Code Playgroud) 我添加一个图表:
doughnutchart_data.add_series('YTD COMPLETION TO PLAN', (PerformancePercent, NotPerformedPercent))
Run Code Online (Sandbox Code Playgroud)
这给了我带有文本的图表标题,但是如何更改字体大小?这个:
ThisDoughnutChart.title.font.size = Pt(12)
Run Code Online (Sandbox Code Playgroud)
给我这个错误:AttributeError:'Chart'对象没有属性'title'
我道歉,我一直在寻找解决方案,但找不到足够的文档来弄明白.我正在尝试导入学校所需的默认幻灯片布局,它有一个特殊的背景和一个标题栏和一个字幕块.我假设当我导入它时,python-pptx会自动为这两个文本块创建占位符0和1但是当我尝试编辑占位符时,我得到一个属性错误:
AttributeError: 'Presentation' object has no attribute 'placeholders'
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
from pptx import Presentation
prs = Presentation('SeniorDesignTitleSlide.pptx')
Presentation_Title = prs.placeholders[0]
Presentation_Subtitle = prs.placeholders[1]
Presentation_Title.text = 'This Is a Test'
Presentation_Subtitle.text = 'Is This Working?'
prs.save('SlideLayoutImportTest.pptx')
Run Code Online (Sandbox Code Playgroud)
编辑[0]:我确实意识到我只是打开那个特定的演示文稿,但是如何访问和编辑其中的单个幻灯片?
编辑[1]:我在2015年发现了一些关于python-pptx扩展此功能的帖子,但没有进一步的信息,它实际上发生了.
python-pptx如何为导入的幻灯片布局分配占位符?或者甚至这样做?它需要是.potx文件吗?
先感谢您.
在幻灯片上添加 ROUNDED_RECTANGLE 时,通过使用 pptx,我生成了以下几行和幻灯片。
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Inches
prs = Presentation()
title_only_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_only_slide_layout)
shapes = slide.shapes
shape = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(1), Inches(0.5), Inches(8), Inches(2))
prs.save('c:\\PPT\\round rectangle.pptx')
Run Code Online (Sandbox Code Playgroud)
如果是手动的,可以调整圆角(红色箭头指向的地方)。
有没有办法从脚本中控制它?谢谢你。
我正在研究python-pptx包。对于我的代码,我需要提取演示文稿文件中存在的所有图像。有人可以帮助我吗?
在此先感谢您的帮助。
我的代码如下所示:
import pptx
Run Code Online (Sandbox Code Playgroud)
prs = pptx.Presentation(filename)
for slide in prs.slides:
for shape in slide.shapes:
print(shape.shape_type)
Run Code Online (Sandbox Code Playgroud)
使用shape_type时,显示的是ppt中存在的PICTURE(13)。但是我想将图片提取到存在代码的文件夹中。
python-pptx包的新功能。 https://python-pptx.readthedocs.io/en/latest/ 想要将图片插入PowerPoint。如何设置图片的宽度和高度?
我现在拥有的代码:
from pptx import Presentation
from pptx.util import Inches
img_path = 'monty-truth.png'
prs = Presentation()
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
left = top = Inches(1)
pic = slide.shapes.add_picture(img_path, left, top)
prs.save('test.pptx')
Run Code Online (Sandbox Code Playgroud) 我是 python pptx 库的新手,我的问题是:如何使用 Python 库 pptx 定义现有演示文稿中每个 pptx 幻灯片的形状列表、形状编号/索引(shapetree)和形状类型?我想更新现有的 ppt 演示文稿,似乎第一步是在每张幻灯片上找到准确的形状标识符,以便通过更新访问它们。你会指出我现有的解决方案或可能的例子吗?
我正在使用 pptx python 创建一个表
参考:https : //python-pptx.readthedocs.io/en/latest/dev/analysis/tbl-table.html
创建表格时,我获得了默认表格样式,我想更改它。有什么推荐吗?
x, y, cx, cy = Inches(4.5), Inches(1.5), Inches(4.0), Inches(0)
shape = slide.shapes.add_table(7, 5, x, y, cx, cy)
table = shape.table
Run Code Online (Sandbox Code Playgroud)
我在想,table.apply_style()但我无法弄清楚正确的语法
我正在尝试使用 x 和 y 系列数据制作一个简单的 python-pptx xy 散点图,但到目前为止尚未成功。
from pptx import Presentation
from pptx.util import Inches,Pt
from pptx.enum.chart import XL_CHART_TYPE
from pptx.chart.data import XySeriesData
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(title_slide_layout)
slide2 = prs.slides.add_slide(blank_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"
chart_data = XySeriesData
chart_data.x_values=[0,1,2,3,4,5]
chart_data.y_values=[10,22,33,38,40,43]
x, y, cx, cy = Inches(1), Inches(2), Inches(8), Inches(3)
chart = slide2.shapes.add_chart(XL_CHART_TYPE.XY_SCATTER, x, y, cx, cy, chart_data).chart
prs.save('test1.pptx')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
文件“C:\Users\adnan\Google Drive\Learning\Python\5g_tti_parser\untitled0.py”,第 …
def new_presentation():
prs=Presentation()
img="C:/Users/Dennis/Desktop/Tom-Hiddleston-4-1024x768.jpg"
mainsld=new_slide(prs, 6)
mainshp=mainsld.shapes
mainshp.add_picture(img, 0,0, Inches(10))
titleshape=mainshp.add_shape(MSO_SHAPE.RECTANGLE, Inches(0), Inches(1), Inches(10), Inches(1))
titleshape.fill.solid()
titleshape.fill.fore_color.rgb=RGBColor(0x00,0x64,0x00)
titleshape.fill.transparency = 0.25 ##doesnt work???##########################
titleshape.line.fill.background()
titlebox=mainshp.add_textbox(Inches(1), Inches(0.8),Inches(1), Inches(1)).text_frame.add_paragraph()
titlebox.text="TOM HIDDLESTON"
titlebox.font.name="Calibri"
titlebox.font.size=Pt(36)
titlebox.font.color.rgb=RGBColor(0x90,0x90,0x00)
prs.save('test.pptx')
Run Code Online (Sandbox Code Playgroud)
标有“######s”的行应该使形状更加透明,如 pptx 文档中所写 - 它是 shape.fill 属性。代码中的其他所有内容都完美运行。我正在使用 python 2.7 和最新的 pptx。提前谢谢你的帮助。
我想安装 pptx 包,我在下面尝试过。我的主要目标是运行本页底部提供的代码。
我有最新版本的 PIP,我收到消息
Collecting pptx
Could not find a version that satisfies the requirement pptx (from versions: )
No matching distribution found for pptx
(C:\ProgramData\Anaconda3) C:\WINDOWS\system32>easy_install -U pip
Searching for pip
Reading https://pypi.python.org/simple/pip/
Best match: pip 18.0
Processing pip-18.0-py3.6.egg
pip 18.0 is already the active version in easy-install.pth
Installing pip-script.py script to C:\ProgramData\Anaconda3\Scripts
Installing pip.exe script to C:\ProgramData\Anaconda3\Scripts
Installing pip3-script.py script to C:\ProgramData\Anaconda3\Scripts
Installing pip3.exe script to C:\ProgramData\Anaconda3\Scripts
Installing pip3.6-script.py script to C:\ProgramData\Anaconda3\Scripts
Installing pip3.6.exe script …Run Code Online (Sandbox Code Playgroud) 我已经设法使用python-pptx读取 Python 中现有的 .pptx 文件,并且可以访问 powerpoint 幻灯片中的表格。
我失败的是:获取单元格的边框颜色。
我想根据表格边框颜色在表格单元格中插入数据,例如在具有绿色边框的表格单元格中插入“111”,在具有红色边框的单元格中插入“222”。
插入值是可行的,但如果不检查表格(或单元格)边框颜色,数据最终会出现在错误的位置。
一张ppt幻灯片上不止一张表格。这些表格均具有独特的边框颜色,例如,一张表格周围有实心绿色边框,另一张表格是全绿色的,另一张表格是蓝色的,等等。
这就是我迭代页表和访问单元格的方式:
from pptx import Presentation
pptx_file = r"my_file_here"
with open(pptx_file, "rb") as pptx:
prs = Presentation(pptx)
for slide in prs.slides:
for shape in slide.shapes:
if not shape.has_table:
continue
table = shape.table
my_input_field = table.cell(0, 1)
Run Code Online (Sandbox Code Playgroud)
my_input_field我想根据颜色插入,但不知道如何获取/检查/读取它的边框颜色?
恐怕我太愚蠢了,无法处理那里的信息,这对我没有帮助: https: //python-pptx.readthedocs.io/en/latest/api/dml.html#pptx.dml.color。颜色格式
有人能指出我正确的方向吗?
编辑:
我很确定有一种方法可以访问颜色。文档指出:
细胞
单元格具有背景填充、边框、边距和其他几个可以逐个单元格自定义的格式设置。
但我不知道如何访问这个属性。我已经查看了设置颜色的代码片段,但我无法从这个示例中理解任何意义。
编辑2:我的解决方法
我仍然没有解决方案,但万一有人偶然发现这一点 - 这是我的小解决方法:我将表格的颜色名称作为文本放在表格本身中。
迭代所有表时,我从表中读取此文本并将其删除。这样我就可以区分表格并添加正确的信息。
这不是很好,但是很有效。
python-pptx ×12
python ×10
powerpoint ×5
python-2.7 ×2
python-3.x ×2
formatting ×1
installation ×1
presentation ×1
transparency ×1