Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] запустить .exe - EXCEL запустить


Автор: Mal Hack 8.3.2009, 21:42
Нужно запсутить из Qt Excel и передать ему на отображение CSV файл... Пока не получается первое.
Пытаюсь заюзать QProcess: start & execute, но глухо, т.к. он пытается выполнить команды из cmd-shell, а следовательно 
Код

QProcess *prc = new QProcess;
    //QProcess::execute("excel.exe");
    prc->execute("C:/Program Files (x86)/Microsoft Office/Office12/EXCEL.EXE");

QProcess::ProcessError err = prc->error ();

Ничего не запускается. В err - UnknownError.


Благодарю за внимание.

Автор: Mal Hack 8.3.2009, 22:08
А ларчик-то открывался просто. Видать уже переработался smile))
Код

class thExec : public QThread
{
public:
    void execute(QString);
protected:
    void run(void);

    QString cmd;
};

void thExec::run(void)
{
    system(this->cmd.toStdString().c_str());
}

void thExec::execute(QString cmd)
{
    this->cmd = cmd;

    this->start();
}

В функцию execute() объекта созданного от класса thExec, передаем:
Код

threadExec.execute(QString("\"C:/Program Files (x86)/Microsoft Office/Office12/EXCEL.EXE\" " + tblSkya->item(0, 0)->text().trimmed() + ".csv"));


Более рациональные и оптимальные варианты преветствуются.

Спасибо powerfox'у

Автор: SABROG 9.3.2009, 11:21
У меня все работает так:

Код

    QProcess process(this);
    process.execute(QLatin1String("C:/Program Files/Microsoft Office/OFFICE11/EXCEL.EXE"), QStringList() << QLatin1String("book1.csv"));


При этом book1.csv лежит в папке с exe'шником программы.

Автор: Mal Hack 5.6.2009, 17:12
Спасибо за информацию. Сделал несколько по другому, правда.

Автор: chesterfielda 1.9.2009, 13:48
Добрый день!!!Очень полезная тема оказалась для меня...
Открываю документ Excel так :
Код

    QProcess process(this);
    process.execute(QLatin1String("C:/Program Files/Microsoft Office/OFFICE11/EXCEL.EXE"), QStringList() << QLatin1String("book1.csv"));


Может кто-нить подскажет, как можно при этом открытии вызвать команду в Excel:
Код

 Selection.QueryTable.Refresh BackgroundQuery:=False

Ну или макрос вызвать при открытии сразу

Автор: Любитель 1.9.2009, 14:12
Повесить макрос на Workbook_Open. Только это вопрос по MSO уже, а не Qt smile 

Автор: SABROG 1.9.2009, 18:08
Вот, полезная http://wiki.crossplatform.ru/index.php/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_MS_Office_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_ActiveQt, только стоит понимать, что это может не работать с mingw и не будет работать нигде кроме как в винде.

Автор: mir666 2.5.2010, 13:08
привет, а случайно не знает кто нить код, наоборот из CSV файла чтоб инфа поступала в Table Widget
помогите пожалуйста!...
заранее спасибо!...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)