wxPython Not Ready for Commercial Use
Fritz Bosch
uthand at hotmail.com
Fri Sep 17 02:28:21 EDT 2004
Paul McNett <p at ulmcnett.com> wrote:
> Andrew Durdin writes:
>
> > I was recently involved in a project which required producing
> > excel files programmatically (this was from VB *spew*). I
> > started off using COM, but it turned out to be unreasonably
> > slow for filling in all the cells that we needed to do; so
> > instead we output an XML spreadsheet. It was much faster, and
> > simpler in the end.
>
> I used COM to do an Excel spreadsheet once. It was pretty
> complex and took an outrageous amount of processing time. And
> then the client updated Excel and had to call me in because
> something in the COM interface changed.
>
> I wonder if your XML method has a better chance of surviving
> Excel "upgrades". I will certainly try to avoid COM in the
> future.
Each call of the COM interface is quite slow, but it seems to
be larglely independent of the amount of data transferred in
a call. So the solution seems to be to transfer large chunks
at a time instead of individual cells:
# get the content of an excel range as a list of lists
data = my_excel_range.Value
data = [list(row) for row in data]
# manipulate the data inside python
...
# transfer it back to excel in one go
my_excel_range.Value = data
It's quite easy to access the entire used range of a worksheet
in this way:
book = excelApp.Workbooks.Open(file_name)
sheet = book.Sheets[sheet_name]
my_excel_range = sheet.UsedRange
fritz
More information about the Python-list
mailing list