norseman wrote:
MSDN has rather extensive documentation on the Excel object model,
although it is somewhat spread out. Search for "Excel object model".
I cheated on xlCSV. That's the name of the symbol, and I believe it
will even be available as win32com.client .constants.xlCS V after you
instantiate the application, but I just searched the web for "xlCSV" and
hard-coded the 6.
Workbooks don't exit or quit. Workbooks can be closed, but exit is
something that applies to the application (excel, in your case). You
should also be able to say
excel = None
to get rid of the app.
The Workbook.Close method accepts parameters; you should be able to get
it to skip the dialog. I believe that wb.Close( False ) should do this.
--
Tim Roberts, timr@probo.com
Providenza & Boekelheide, Inc.
Tim;
Finally got a chance to test your snippet. Thank you for it!
>
I took the liberty of flushing it out a bit.
=============== =
#!/---
#
import os
import win32com.client
>
excel = win32com.client .Dispatch( 'Excel.Applicat ion' )
excel.Visible=1 # shows the spreadsheet (can be handy)
xlCSV = 6
# substitute for list generation
list = ["c:\\temp\\test .xls", "c:\\temp\\test 1.xls"]
>
for nm in list:
csv = os.path.splitex t( nm )[0] + '.csv'
print "Procesing file:", csv
if os.path.exists( csv): # window$ won't auto overwrite
os.unlink(csv)
wb = excel.Workbooks .Open( nm )
wb.SaveAs( csv, xlCSV )
print wb.Close() # requires manual verification
# eliminating unattended runs
>
#wb.Exit() & wb.Quit() # generate ERROR(s) - no such thing(s)
# leaving Excel open
>
excel.Visible=0 # actually closes Excel if no sheet open
# verified via task manager
>
print "Check to see if this worked."
>
# end of file
=============== ==
The above does in fact work.
Using the above I have a few questions.
Documentation on xlCSV came from where?
" on .Workbooks.Open (file.xls) came from ???
" on .SaveAs( filename, xlCSV ) came from ???
" on .Close() came from ???
Finally got a chance to test your snippet. Thank you for it!
>
I took the liberty of flushing it out a bit.
=============== =
#!/---
#
import os
import win32com.client
>
excel = win32com.client .Dispatch( 'Excel.Applicat ion' )
excel.Visible=1 # shows the spreadsheet (can be handy)
xlCSV = 6
# substitute for list generation
list = ["c:\\temp\\test .xls", "c:\\temp\\test 1.xls"]
>
for nm in list:
csv = os.path.splitex t( nm )[0] + '.csv'
print "Procesing file:", csv
if os.path.exists( csv): # window$ won't auto overwrite
os.unlink(csv)
wb = excel.Workbooks .Open( nm )
wb.SaveAs( csv, xlCSV )
print wb.Close() # requires manual verification
# eliminating unattended runs
>
#wb.Exit() & wb.Quit() # generate ERROR(s) - no such thing(s)
# leaving Excel open
>
excel.Visible=0 # actually closes Excel if no sheet open
# verified via task manager
>
print "Check to see if this worked."
>
# end of file
=============== ==
The above does in fact work.
Using the above I have a few questions.
Documentation on xlCSV came from where?
" on .Workbooks.Open (file.xls) came from ???
" on .SaveAs( filename, xlCSV ) came from ???
" on .Close() came from ???
although it is somewhat spread out. Search for "Excel object model".
I cheated on xlCSV. That's the name of the symbol, and I believe it
will even be available as win32com.client .constants.xlCS V after you
instantiate the application, but I just searched the web for "xlCSV" and
hard-coded the 6.
Tell me about the lack of the .Exit() and/or .Quit(), please.
something that applies to the application (excel, in your case). You
should also be able to say
excel = None
to get rid of the app.
I ran out of time today. Is it possible to send something like an
<enterkeystro ke to a Window (<yes><no>) box if it accepts same from
actual keyboard? May not work anyway since .Close() hangs (in
interactive) awaiting it's answer.
<enterkeystro ke to a Window (<yes><no>) box if it accepts same from
actual keyboard? May not work anyway since .Close() hangs (in
interactive) awaiting it's answer.
it to skip the dialog. I believe that wb.Close( False ) should do this.
--
Tim Roberts, timr@probo.com
Providenza & Boekelheide, Inc.