14

I am creating a Python script where it does a bunch of tasks and one of those tasks is to launch and open an instance of Excel. What is the ideal way of accomplishing that in my script?

1

7 Answers 7

12

While the Popen answers are reasonable for the general case, I would recommend win32api for this specific case, if you want to do something useful with it:

It goes something like this:

from win32com.client import Dispatch
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Open('C:\\Documents and Settings\\GradeBook.xls')
xl.Visible = True    # optional: if you want to see the spreadsheet

Taken from a mailing list post but there are plenty of examples around.

Sign up to request clarification or add additional context in comments.

1 Comment

If you want to see the excel spreadsheet as well, then you need to add xl.Visible = True
8

or

os.system("start excel.exe <path/to/file>")

(presuming it's in the path, and you're on windows)

and also on Windows, just start <filename> works, too - if it's an associated extension already (as xls would be)

1 Comment

Note that on Windows you will see the cmd window quickly open and close if you os.system(). IMHO it's better to use os.startfile().
7

The subprocess module intends to replace several other, older modules and functions, such as:

  • os.system
  • os.spawn*
  • os.popen*
  • popen2.*
  • commands.*

.

import subprocess

process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])

print process_one.pid

Comments

7

I like popen2 for the ability to monitor the process.

excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()

https://docs.python.org/2/library/popen2.html

EDIT: be aware that calling wait() will block until the process returns. Depending on your script, this may not be your desired behavior.

Comments

3

As others have stated, I would suggest os.system. In case anyone is looking for a Mac-compatible solution, here is an example:

import os
os.system("open /Applications/Safari.app")

Comments

0

os.system("open file.xls")

1 Comment

Probably works on NeXTstep too. But certainly not Windows or UNIX. Given that the question asks about Excel, I'd assume OS X or Windows.
0

I like os.startfile("path to file") as it opens the file as if you've double clicked to open.

I found that with os.system("start excel filename") it opened it like a file opened from the web and you had to enable editing.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.