Как вызвать скрипт Python из C ++ (Clion)

Хорошо, так что после поиска слишком много через Интернет у меня все еще есть моя проблема. У меня есть очень простой скрипт Python, который открывает указанный файл Excel, а затем запускает макрос.

Я точно знаю, что мой скрипт на Python работает так, как должен.
Я точно знаю, что мой код на C ++ работает так, как должен.

Но комбинация обоих создает ‘com_error’. Так что любой, кто видит это, знает, это все тесты, которые я провел:

(1) простой скрипт на Python (просто печатает привет) -> передано
(2) использовать C ++ для запуска того же простого скрипта .py -> передано
(3) больше скрипта на python advanecd (открывает Excel, запускает макрос, сохраняет и закрывает) -> pass
(4) код usc C ++ для запуска расширенного сценария .py -> сбой.

И есть моя проблема. это как-то связано с win32com.client и ошибкой, которую выдает сервер, потому что он не может найти местоположение файла (но, поверьте мне, он может, потому что он прошел тест «найти файл»)

Я использую Windows7, Python 2.7 и последнюю версию JetBrains Clion (2017.1.2).

Любая помощь будет так ценится. Спасибо! Удачного кодирования.

Код C ++:

#include <iostream>
#include <Windows.h>

using namespace std;

int main() {
const char *cmd = "python C:\\Users\\Alex.Valente\\Desktop\\python.py";

PROCESS_INFORMATION processInformation = {0};
STARTUPINFO startupInfo                = {0};
startupInfo.cb                         = sizeof(startupInfo);BOOL result = CreateProcess(NULL, (LPSTR)cmd,
NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS,
GetEnvironmentStrings(), NULL, &startupInfo, &processInformation);
if(!result){
return -1;
}
WaitForSingleObject( processInformation.hProcess, INFINITE );
return 0;
}

Python Script:

from __future__ import print_function
import unittest
import os.path
import win32com.client
import os

class ExcelMacro(unittest.TestCase):
def test_excel_macro(self):
xlApp = win32com.client.DispatchEx('Excel.Application')
xlsPath = r'C:\Users\Alex.Valente\Desktop\Data.csv'
xlApp.Visible = True
wb = xlApp.Workbooks.Open(Filename=xlsPath)
xlApp.Run("PERSONAL.XLSB!PythonTest")
wb.Save()
wb.Close()
xlApp.Quit()
print("Macro ran successfully!")
if __name__ == "__main__":
unittest.main()

И ошибка, которая печатается после того, как я запускаю его:

======================================================================
ERROR: test_excel_macro (__main__.ExcelMacro)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\Alex.Valente\Desktop\python.py", line 25, in test_excel_macro
wb = xlApp.Workbooks.Open(Filename=xlsPath)
File "<COMObject <unknown>>", line 8, in Open
com_error: (-2147417851, 'The server threw an exception.', None, None)

----------------------------------------------------------------------
Ran 1 test in 6.305s

FAILED (errors=1)

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]