Ironpython 将Spotfire图形导出到PowerPoint的脚本

Ironpython 将Spotfire图形导出到PowerPoint的脚本,ironpython,spotfire,Ironpython,Spotfire,我正在尝试将活动页面导出到现有PowerPoint演示文稿。我知道如何从标题栏中执行此操作,但我希望将其合并到我正在编写的IronPython代码中,这样我就可以同时执行多个幻灯片 谢谢, Joseph这将打开powerpoint并导出每页一个可视化: from System.IO import * from Spotfire.Dxp.Application.Visuals import VisualContent from System.Drawing import Bitmap, Graph

我正在尝试将活动页面导出到现有PowerPoint演示文稿。我知道如何从标题栏中执行此操作,但我希望将其合并到我正在编写的IronPython代码中,这样我就可以同时执行多个幻灯片

谢谢,
Joseph

这将打开powerpoint并导出每页一个可视化:

from System.IO import *
from Spotfire.Dxp.Application.Visuals import VisualContent
from System.Drawing import Bitmap, Graphics, Rectangle, Point
import clr
clr.AddReference("Microsoft.Office.Interop.PowerPoint")
import Microsoft.Office.Interop.PowerPoint as PowerPoint

powerpoint = PowerPoint.ApplicationClass()
powerpoint.Visible = True
pres=powerpoint.Presentations.Add()
slideCounter = 1

for visual in Document.ActivePageReference.Visuals:
    #print visual.Title

    #export graphic to temp file
    vc = visual.As[VisualContent]()
    bm = Bitmap(2000, 1200)
    g = Graphics.FromImage(bm)
    r = Rectangle(Point(0,0), bm.Size)
    vc.Render(g, r)
    file = Path.GetTempFileName()
    bm.Save(file)

    #pp setup
    slide=pres.Slides.Add(slideCounter, PowerPoint.PpSlideLayout.ppLayoutTitleOnly)
    slideCounter = slideCounter+1
    slide.Shapes.AddPicture((file), False, True, 30, 60, 650, 400)
    title=slide.Shapes.Title
    txt=slide.Shapes.AddTextBox(1,10,500,500,100)
    title.Top=0.1
    obj=slide.Shapes.Title.TextFrame.TextRange
    obj.Font.Size=24
您可以通过以下方式循环浏览页面:

for page in Document.Pages:
    Document.ActivePageReference=page

根据此处找到的代码进行调整:

它们位于Spotfire API中。每个页面都有一组可视化内容。看看下面的片段,你可能会有一个想法

foreach (Spotfire.Dxp.Application.Page page in SpotfireDocument.Pages) 
allVisuals.AddRange(page.Visuals); 
// in my case SpotfireDocument extends {Spotfire.Dxp.Application.Document}

但是,这里有人知道如何看到整个活动页面吗?上述方法将在活动页面上提供子视觉快照,但不是整个页面本身。

看起来Flux的答案可以完成这项工作,但值得一提的是,您可以使用相同的文件->导出->Powerpoint一次导出所有页面,并选择导出
所有页面
所有页面(每个可视化新页面)
。撇开Python合并不谈,这会不会让你达到你想要的目的,或者我遗漏了什么?我尝试了上面的代码,它在渲染文件系统中给出了下面的错误文件“Spotfire.Dxp.Application”,行未知。错误:尝试在“正在执行”状态的应用程序线程上拍摄快照。请帮助me@Aparna取消选中“编辑脚本”菜单中的“在事务中执行”字段。应提供帮助。