Use Python to launch Excel file
Solution 1
If you only want to open the excel application you could use subprocess:
import subprocess
subprocess.check_call(['open', '-a', 'Microsoft Excel'])
You can also use os and open a specific file:
import os
os.system("open -a 'path/Microsoft Excel.app' 'path/file.xlsx'")
If you on other hand want to open an excel file within python and modify it there's a number of packages to use as xlsxwriter, xlutils and openpyxl where the latter is prefered by me.
Another note, if you're on mac the excel application isn't .exe
Solution 2
Just these two lines
import os
os.system("start EXCEL.EXE file.xlsx")
Provided that file.xlsx is in the current directory.
Solution 3
I don't know about Mac OS, but if Windows Operating System is the case and provided the Microsoft Windows is properly installed, then consider using :
import os
os.system('start "excel" "C:\\path\\to\\myfile.xlsx"')
double-quotation
is important for excel
and C:\\path\\to\\myfile.xlsx
( where C
just denotes the letter for the partition within the file system, might be replaced by D
,E
..etc. ), and single-quotation
is needed for the whole string within the os.system()
.
Solution 4
On Windows 10, this works for me:
import os
full_path_to_file = "C:\blah\blah\filename.xlsx"
os.system(full_path_to_file)
Copy-pasting any full path to a file in the command prompt (or passing it to os.system()) seems to work as long as you have permission to open the file. I suppose this only works when Excel is selected as default application for the .xlsx extention.
C2P1
Updated on March 27, 2021Comments
-
C2P1 over 3 years
when i try
os.system("open " + 'myfile.xlsx')
i get the output'0'
similarly, trying
os.system("start excel.exe myfilepath")
gives the result32512
I have imported os and system, and I'm on mac. How can I change this so it does actually launch that excel file? And out of curiosity, what do the numbers it prints out mean?
Thanks!
-
Moondra almost 7 yearsWhat does the
a
parameter do? Thank you. -
technazi over 5 yearsJust a heads up! xlsxwriter can overwrite your Excel files while OpenPyxl will not. The best way is to copy the file in another folder.
-
user1459519 over 5 yearsA tweak: for filenames with embedded blanks enclose the entire parameter with SINGLE quotes and put DOUBLE quotes around the file name (e.g. ' start EXCEL.EXE " C:/temp/new file.csv " '. The extra spaces don't hurt and can prevent parameters from being "merged" when the command is run. BTW on Python 3.x (and possibly 2.x) you should use '/' as the file separator, never "\" - even on Windows. Python will do the conversion so you don't need to use double backslashes in paths (necessary to prevent the first character from being interpreted as a control character, e.g "\n" = line feed).
-
Ahmed Adewale over 5 yearsThanks for the addition user1459519 it was helpfull.
-
Mike - SMT over 4 yearsWorth noting
os.system('start excel.exe file.xlsx')
will open file with same name from your documents folder andos.system('start "excel.exe" "file.xlsx"')
(note the extra quotes) will open file from same folder as code is in. Testing this on my end I am not sure y this happens but probably an important distinction. -
Javiar Sandra over 3 yearsIn mac,
os.system("open -a 'Microsoft Excel' 'path/file.xlsx'")
and this works too:subprocess.check_call(['open', '-a', 'Microsoft Excel','path/file.xlsx'])