Ошибка «Запустить файл Excel из Python» - PullRequest
0 голосов
/ 04 мая 2011

Когда я пытаюсь открыть файл Excel, вызывая сам EXCEL из python, я получаю сообщение об ошибке.Как я могу это исправить?

Заранее спасибо.

Код:

    from win32com.client import Dispatch
    xl = Dispatch('Excel.Application')
    wb = xl.Workbooks.Open(r"data\Modules.xls")       

И ошибка:

pywintypes.com_error:(-2147352567, 'Возникла исключительная ситуация.', (0, u'Microsoft Office Excel ', u' 'data \ Modules.xls' не найден. Проверьте правильность написания имени файла и убедитесь, что местоположение файла указано правильно).. \ n \ nЕсли вы пытаетесь открыть файл из списка последних использованных файлов, убедитесь, что файл не был переименован, перемещен или удален. ", u'C: \ Program Files (x86) \ MicrosoftOffice \ Office12 \ 1033 \ XLMAIN11.CHM ', 0, -2146827284), нет)

Ответы [ 4 ]

7 голосов
/ 04 мая 2011

Используйте os.path.abspath (), чтобы преобразовать пути файловой системы в абсолютные.Текущий рабочий каталог процессов Python и Excel не совпадает.

http://docs.python.org/library/os.path.html

0 голосов
/ 04 сентября 2018

@ Shanshal Я не знаю, ищите ли вы ответ? После открытия Excel, если вы не видите файл, напишите следующий код

xl.Visible = True
0 голосов
/ 25 декабря 2012

Я пробовал много случаев о:

  • сырой путь
  • с использованием os.path.abspath
  • абсолютный путь

следующий результат:

(1) Неудачные случаи:

#[1] Fail
# xlsPath = "chart_demo.xls";
# wb = xl.Workbooks.open(xlsPath); #pywintypes.com_error

#[2] Fail
# xlsPath = "D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls";
# absPath = os.path.abspath(xlsPath);
# print "absPath=",absPath; #absPath= D:\tmp\tmp_dev_root\python\excel_chart\        mp      mp_dev_root\python\excel_chart\chart_demo.xls
# wb = xl.Workbooks.open(absPath); #pywintypes.com_error

#[3] Fail
# xlsPath = "D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls";
# normalPath = os.path.normpath(xlsPath);
# print "normalPath=",normalPath; #normalPath= D:  mp      mp_dev_root\python\excel_chart\chart_demo.xls
# wb = xl.Workbooks.open(normalPath); #pywintypes.com_error

#[4] Fail
# rawPath = r"chart_demo.xls";
# wb = xl.Workbooks.open(rawPath); #pywintypes.com_error

(2) Успешные случаи:

#[5] OK
# xlsPath = "chart_demo.xls";
# absPath = os.path.abspath(xlsPath);
# print "absPath=",absPath; #absPath= D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls
# wb = xl.Workbooks.open(absPath); #OK

#[6] OK
# rawPath = r"D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls";
# wb = xl.Workbooks.open(rawPath); # OK
0 голосов
/ 04 мая 2011

Я считаю, что причина, по которой вы должны указать полный путь к файлу, заключается в том, что вы взаимодействуете с Excel через интерфейс COM.Это не то же самое, что вызов CreateProcess.COM-интерфейс указывает Excel открыть файл, однако путь передается относительно рабочего каталога процесса excel.exe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...