Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python:使用win32com将Excel单元格粘贴到Powerpoint,而不会丢失单元格格式

Python:使用win32com将Excel单元格粘贴到Powerpoint,而不会丢失单元格格式
EN

Stack Overflow用户
提问于 2022-09-26 07:25:38
回答 1查看 143关注 0票数 2

我希望使用PasteSpecial复制和粘贴Excel单元格范围到Powerpoint,同时保留Excel单元格格式。我使用Office 2016

我的Excel工作簿如下所示:

您可以在这里下载Excel文件:https://docs.google.com/spreadsheets/d/1uicqSQEEMJIttxW6r1_E8higTk2HXbtC/edit?usp=sharing&ouid=103651073926513131793&rtpof=true&sd=true

我希望使用第二个粘贴选项(**Keep Source Formatting (K)**),在中复制单元格的手动复制和Powerpoint中的“特殊粘贴”

手动操作的结果是一个具有Excel源代码格式的可编辑表:

我使用以下代码创建powerpoint演示文稿,并将表数据复制到演示文稿的第一张幻灯片:

代码语言:javascript
运行
AI代码解释
复制
import win32com.client

# initialize Powerpoint and get slide object
ppt_app = win32com.client.Dispatch("PowerPoint.Application")
ppt_presentation = ppt_app.Presentations.Add(True)
ppt_presentation.Slides.Add(1, 12)
ppt_slide = ppt_presentation.Slides(1)


# load Excel file and get worksheet object
excel_app = win32com.client.Dispatch("Excel.Application")
workbook = excel_app.Workbooks.Open(Filename="my_excel_file.xlsx", ReadOnly=1)
worksheet = workbook.Sheets(1)
worksheet.Range("A1:H8").Copy()  # select cells and copy to clipboard


# paste cells to Powerpoint slide
ppt_slide.Shapes.PasteSpecial(DataType=0, Link=False)

由于Python脚本,单元格作为可编辑数据被复制到Powerpoint (这是我想要的,而不是图像),但是单元格格式丢失了:

脚本显然应用了第一个粘贴选项(**Use Destination Theme (H)**).我想知道如何在这里指定第二个粘贴选项,以保持单元格格式。

我尝试了不同的DataType选项的PasteSpecial方法,但它没有工作。要么不应用任何格式,要么将单元格粘贴为图像对象。

代码语言:javascript
运行
AI代码解释
复制
ppt_slide.Shapes.PasteSpecial(DataType=0, Link=False)

下面列出了所有可用的DataType选项(PpPasteDataType)的列表:https://learn.microsoft.com/en-us/office/vba/api/powerpoint.pppastedatatype

PasteSpecial方法记录在这里:https://learn.microsoft.com/en-us/office/vba/api/powerpoint.shapes.pastespecial

有没有人知道如何在不丢失格式的情况下粘贴Excel单元格?谢谢你!!

EN

回答 1

Stack Overflow用户

发布于 2022-09-27 00:15:28

我刚刚找到了一个解决办法,避免了Shapes对象的Shapes方法。相反,我使用Powerpoint应用程序对象的宏执行方法:

代码语言:javascript
运行
AI代码解释
复制
ppt_app.CommandBars.ExecuteMso("PasteSourceFormatting")

在这里,完整的工作代码:

代码语言:javascript
运行
AI代码解释
复制
import win32com.client

# initialize Powerpoint and get slide object
ppt_app = win32com.client.Dispatch("PowerPoint.Application")
ppt_presentation = ppt_app.Presentations.Add(True)
ppt_presentation.Slides.Add(1, 12)


# load Excel file and get worksheet object
excel_app = win32com.client.Dispatch("Excel.Application")
workbook = excel_app.Workbooks.Open(Filename="my_excel_file.xlsx", ReadOnly=1)
worksheet = workbook.Sheets(1)

worksheet.Range("A1:H8").Copy()  # select cells and copy to clipboard


# paste cells to Powerpoint slide with macro command
ppt_app.CommandBars.ExecuteMso("PasteSourceFormatting")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73856399

复制
相关文章

相似问题

CSS字体粗细选项

20

打印html网页时字体粗细无用

171

HTML5 Required属性将Chrome上的<select>选项字体更改为Times New Roman

10

Html标题-使用google map API更改字体粗细

20

设置字体粗细的jQuery属性

50
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文