#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 не совпадает.
Комментарии:
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 должен находиться в другой папке. Я также получал ту же ошибку, когда использовал вышеуказанные меры, проблема была решена. В случае относительного пути вам необходимо преобразовать его в абсолютный.