pywin32 COM sort in Excel (late binding fails, early binding works) (+py2exe)
Thomas Heller
theller at ctypes.org
Thu Oct 19 13:09:46 EDT 2006
kogrover at gmail.com schrieb:
> ISSUE: COM Excel Sort works with Early Binding, but not Late Binding,
> but py2exe only does Late Binding
>
> I have code similar to this (type from notes, so there may be a
> typo...)
>
> import win32com.client
> xl = win32com.client.Dispatch("Excel.Application")
> xl.Visible = False
> xl.ScreenUpdating = False
> wb = xl.Workbooks.Open("h:\\p.xls")
> sht = wb.Sheets("SheetName") # wb.Worksheets("Sheetname")
> sht.Cells.Sort(Key1=sht.Cells(2,1), Order1=1, Header=1, Orientation=1)
>
> Python: 2.4.3
> pywin32 200
> py2exe 0.6.5
> Office 2000
>
> The sort DOES NOT work if called from a normal install (e.g. using late
> binding): the Header line gets sorted with all the data.
>
> ID Value Mort
> 232 2 54
> 54 33 232
> --->
> 54 33 232
> 232 2 54
> ID Value Mort
>
>
> HOWEVER, If I run
>
> makepy.py and select the "Microsoft Excel 9.0" (--> I'm typing this
> from memory!)
> and run it, it creates the GUID'd py file in gen_py
>
> If I run the above code again (on a clean copy of the xls file), it
> DOES sort the sheet correctly --- the header line is left alone.
>
> ID Value Mort
> 232 2 54
> 54 33 232
> --->
> ID Value Mort
> 54 33 232
> 232 2 54
>
> Normally, this would not be an issue, but when I bundle my app using
> py2exe it does not grab the gen_py stuff.
>
> Any help appreciated...
>
You must instruct py2exe to pick up the typelib wrappers, this does
not happen automatically. IIRC, there's a sample in the distribution
somewhere.
Thomas
More information about the Python-list
mailing list