Skip to content

Pywin32

Installation

mhammond / pywin32

python -m pip install -U pywin32

Dispatch

win32.Dispatch vs win32.gencache in Python

This method is recommended because it forces MakePy to run

from win32com.client.gencache import EnsureDispatch

outlook = EnsureDispatch('Outlook.Application')
import win32com.client

outlook = win32com.client.dynamic.Dispatch('Outlook.Application')
import win32com.client

outlook = win32com.client.Dispatch('Outlook.Application')

Using Constants

from win32com.client import constants

mail = outlook.CreateItem(constants.olMailItem)
mail.Close(constants.olDiscard)

Applications

Outlook

Creating Email

from win32com.client import constants
from win32com.client.gencache import EnsureDispatch

outlook = EnsureDispatch('Outlook.Application')
mail = outlook.CreateItem(constants.olMailItem)
mail.Display()

The mail.Display() call is necessary for the HTML signature to populate

Excel

PageSetup

PageSetup

Setup page for printing
setup = sheet.api.PageSetup
setup.Orientation = constants.xlLandscape
setup.PaperSize = constants.xlPaperLetter
setup.PrintArea = rng.address

margin = rng.sheet.book.app.api.InchesToPoints(0.25)
setup.LeftMargin = margin
setup.RightMargin = margin
setup.TopMargin = margin
setup.BottomMargin = margin

Borders

Thick outside border, thin inside border
rng.api.BorderAround(constants.xlContinuous, constants.xlThick)

rng.api.Borders(constants.xlInsideHorizontal).LineStyle = constants.xlContinuous
rng.api.Borders(constants.xlInsideHorizontal).Weight = constants.xlThin
rng.api.Borders(constants.xlInsideVertical).LineStyle = constants.xlContinuous
rng.api.Borders(constants.xlInsideVertical).Weight = constants.xlThin

Hide Column

Hide empty columns
import numpy as np
import pandas as pd
import xlwings as xw

rng = sheet.range('A1').expand('table')
col: xw.Range
for col in rng.columns:
    vals: np.ndarray = col.options(np.array).value
    if pd.isnull(vals).all():
        col.api.EntireColumn.Hidden = True