Ошибка ‘Запустить файл Excel из Python’

#python #winapi #excel

#python #winapi #excel

Вопрос:

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

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

Код является:

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

И ошибка:

pywintypes.com_error: (-2147352567, ‘Произошло исключение.’, (0, u’Microsoft Office Excel’, u»‘dataModules.xls ‘ не удалось найти. Проверьте написание имени файла и убедитесь, что местоположение файла указано правильно.n niесли вы пытаетесь открыть файл из списка последних использованных файлов, убедитесь, что файл не был переименован, перемещен или удален.», u’C:Program Файлы (x86) Microsoft Office Office121033XLMAIN11.CHM’, 0, -2146827284), Отсутствуют)

Комментарии:

1. Находится ли файл кода python в каталоге, в котором существует data каталог? Попробуйте указать полный путь к файлу xls вместо относительного пути.

2. Он находится в том же каталоге. Должно быть так. Я не должен указывать полный путь.

3. Я знаю, что это не то, о чем вы просите, но вы должны попробовать xlrd модуль вместо использования win32com . Сделает вашу жизнь проще.

4. Могу ли я открыть файл Excel в самом EXCEL с помощью xlrd?

Ответ №1:

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

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

Комментарии:

1. Какой путь я должен указать для этой функции?

2. Когда я использую «wb = xl.Workbooks. Открыть(os.path.abspath(r»dataModules.xls «))», я не получаю ошибку. Но я не вижу ни одного открытого файла Excel. Даже если я вижу экземпляр Excel в диспетчере задач.

3. os.path.join(os.getcwd(), «путь, «к», «вашему», «file.xls «))

Ответ №2:

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

Ответ №3:

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

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

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

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

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

#[2] Fail
# xlsPath = "D:tmptmp_dev_rootpythonexcel_chartchart_demo.xls";
# absPath = os.path.abspath(xlsPath);
# print "absPath=",absPath; #absPath= D:tmptmp_dev_rootpythonexcel_chart        mp      mp_dev_rootpythonexcel_chartchart_demo.xls
# wb = xl.Workbooks.open(absPath); #pywintypes.com_error

#[3] Fail
# xlsPath = "D:tmptmp_dev_rootpythonexcel_chartchart_demo.xls";
# normalPath = os.path.normpath(xlsPath);
# print "normalPath=",normalPath; #normalPath= D:  mp      mp_dev_rootpythonexcel_chartchart_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:tmptmp_dev_rootpythonexcel_chartchart_demo.xls
# wb = xl.Workbooks.open(absPath); #OK

#[6] OK
# rawPath = r"D:tmptmp_dev_rootpythonexcel_chartchart_demo.xls";
# wb = xl.Workbooks.open(rawPath); # OK
  

Ответ №4:

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

 xl.Visible = True
  

Ответ №5:

Путь к файлу Excel должен быть абсолютным и py-файлом, файл Excel должен находиться в другой папке. Я также получал ту же ошибку, когда использовал вышеуказанные меры, проблема была решена. В случае относительного пути вам необходимо преобразовать его в абсолютный.