Use Python to launch Excel file

34,372

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.

Share:
34,372
C2P1
Author by

C2P1

Updated on March 27, 2021

Comments

  • C2P1
    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 result 32512

    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
    Moondra almost 7 years
    What does the a parameter do? Thank you.
  • technazi
    technazi over 5 years
    Just 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
    user1459519 over 5 years
    A 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
    Ahmed Adewale over 5 years
    Thanks for the addition user1459519 it was helpfull.
  • Mike - SMT
    Mike - SMT over 4 years
    Worth noting os.system('start excel.exe file.xlsx') will open file with same name from your documents folder and os.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
    Javiar Sandra over 3 years
    In mac, os.system("open -a 'Microsoft Excel' 'path/file.xlsx'") and this works too: subprocess.check_call(['open', '-a', 'Microsoft Excel','path/file.xlsx'])