def changeChartType(self, xlChartType, Index=None): ''' Chart: ChangeType xlChartType: Integer: use self.xlChartType for reference ''' assert type(xlChartType) == int, '%s must be integer!' try: _xlChartType = self.pptChart.ChartType # 返回图表类型 pptWorkbook, pptWorksheet = self.initChartData() # 初始化 if Index: self.pptSeriesCollection(Index).ChartType = xlChartType print('Shape:%s Chart:%s Index:%s change type from %s to %s!' % (self.pptShape.Name, self.pptChart.Name, Index, MSOPowerpointFunc.funcLookupKey(_xlChartType, self.xlChartType), MSOPowerpointFunc.funcLookupKey(xlChartType, self.xlChartType))) else: self.pptChart.ChartType = xlChartType print('Shape:%s Chart:%s change type from %s to %s!' % (self.pptShape.Name, self.pptChart.Name, MSOPowerpointFunc.funcLookupKey(_xlChartType, self.xlChartType), MSOPowerpointFunc.funcLookupKey(xlChartType, self.xlChartType))) self.pptChart.Refresh() time.sleep(self.seconds) pptWorkbook.Close() time.sleep(self.seconds) return True except: traceback.print_exc() return False
def addShape(self, AutoShapeType=1, Left=0, Top=0, Width=100, Height=20): ''' Shape: add AutoShape ''' try: if type(AutoShapeType) is not int: AutoShapeType = self.msoAutoShapeType.get(AutoShapeType, None) if self.presInfo['SlidesCount'] == 0: self.addSlide() if AutoShapeType: self.pptShape = self.pptSlide.Shapes.AddShape( Type=AutoShapeType, Left=Left, Top=Top, Width=Width, Height=Height) self.setShape() print('Shape :%s ShapeType:%s added!' % (self.pptShape.Name, MSOPowerpointFunc.funcLookupKey(AutoShapeType, self.msoAutoShapeType))) return True return False except: traceback.print_exc() return False
def addPicture(self, Picture=None, LinkToFile=0, SaveWithDocument=-1, Left=0, Top=0, Width=-1, Height=-1, AdjustDpi=True): ''' Picture: Insert Picture ''' try: assert os.path.exists(Picture), '%s not found!' % Picture if AdjustDpi: Picture = MSOPowerpointFunc.funcPictureDpi( Picture, self.presInfo['DPI']) if self.presInfo['SlidesCount'] == 0: self.addSlide() self.pptShape = self.pptSlide.Shapes.AddPicture( FileName=Picture, LinkToFile=LinkToFile, SaveWithDocument=SaveWithDocument, Left=Left, Top=Top, Width=Width, Height=Height) self.setShape() print('Shape Picture:%s added!' % self.pptShape.Name) return self.pptShape except: traceback.print_exc() return False
def setMSOobj(self, obj=None, r=None, g=None, b=None, ColorName=None, ShowMessage=True, **kwargs): ''' MSO obj set ''' if not obj: return False # set ForeColor for k, v in kwargs.items(): if hasattr(obj, k): # method if callable(getattr(obj, k)): if v == True: try: getattr(obj, k)() except: traceback.print_exc() else: try: getattr(obj, k)(v) except: traceback.print_exc() # attribute else: if v != None: try: setattr(obj, k, v) except: traceback.print_exc() try: color = MSOPowerpointFunc.getRGB(r=r, g=g, b=b, ColorName=ColorName) if color != False: if hasattr(obj, 'ForeColor') and hasattr(obj.ForeColor, 'RGB'): setattr(obj.ForeColor, 'RGB', color) elif hasattr(obj, 'Color') and hasattr(obj.Color, 'RGB'): setattr(obj.Color, 'RGB', color) except: traceback.print_exc() if ShowMessage: print('MSOobj setted!') return True
def getShapeHyperlinksDict(self): ''' HyperlinksDict ''' HyperlinksDict = {} for SlideIndex in range(1, self.presInfo['SlidesCount'] + 1): pptSlide = self.pptSlides.Item(SlideIndex) if pptSlide.Hyperlinks: for hl in pptSlide.Hyperlinks: Address = hl.Address SubAddress = hl.SubAddress ZOrderPosition = MSOPowerpointFunc.funcGetShapeFromHyperlink( hl) if ZOrderPosition: HyperlinksDict[(SlideIndex, ZOrderPosition)] = (True, Address, SubAddress) return HyperlinksDict
def exportDfsToExcel(self, dfs, sheetnames, filename, index=True): MSOPowerpointFunc.exportDfsToExcel(dfs, sheetnames, filename, index=index)
def exportPPTtoExcel(self): return MSOPowerpointFunc.exportPPTtoExcel(self)