powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT C++, приложение Excel остается открытым после закрытия
11 сообщений из 11, страница 1 из 1
QT C++, приложение Excel остается открытым после закрытия
    #39880077
seg856
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что нужно еще сделать, чтобы приложение Excel закрылось?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
void f_rpt::bOk_click(){

    //QString lcValue1, lcValue2;
    int lnCheck1;
    QSqlQuery query(mdb.db);
    QString txtQuery;
    QDate d1, d2;
    int nRow, nCol;

    d1=this->ui.dDt1->date();
    d2=this->ui.dDt2->date();
    //int nTs;
/*
    lcValue1=this->ui.tValue1->text();
    lcValue2=this->ui.tValue2->text();
    //int i = b?1:0;
    lnCheck1=(this->ui.checkbox1->isChecked())?1:0;
*/
    if (this->theme==1)
    {
       QAxObject *mExcel = new QAxObject("Excel.Application",this);
       // на книги


       QAxObject *workbooks = mExcel->querySubObject("Workbooks");

       mExcel->dynamicCall( "SetVisible(bool)", TRUE );
       // на директорию, откуда грузить книг
       QAxObject *workbook = workbooks->querySubObject( "Open(const QString&)", "D:\\projects\\fox\\spidlab\\template\\spdCarrier.xlt" );

       QAxObject* sheets;
       QAxObject* sheet;
       QAxObject *cell;

       sheets = workbook->querySubObject("Worksheets");
       sheet = workbook->querySubObject("Worksheets(int)", 1);
       //cell = sheet->querySubObject("Cells(int,int)", 2, 2);


       //cell->setProperty("Value","88888");


        txtQuery="call spd_ReportCarrier('"+d1.toString("yyyy-MM-dd")+"','"+d2.toString("yyyy-MM-dd")+"')";

        qDebug() << txtQuery ;

        if (!query.exec(txtQuery)) {
            //qDebug() << "no";
            return;
        }

        nRow=5;

        while (query.next())
        {
            QString column1= query.value(0).toString();
            QString column2= query.value(1).toString();
            QString column3= query.value(2).toString();
            qint32 column4= query.value(3).toInt();
            QString column5= query.value(4).toString();
            QString column6= query.value(5).toString();
            QString column7= query.value(6).toString();
            QString column8= query.value(7).toString();
            QString column9= query.value(8).toString();
            qint32 column10= query.value(9).toInt();
            QDate column11= query.value(10).toDate();

            cell = sheet->querySubObject("Cells(int,int)", nRow, 1);
            cell->setProperty("Value",column1);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 2);
            cell->setProperty("Value",column2);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 3);
            cell->setProperty("Value",column3);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 4);
            cell->setProperty("Value",column4);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 5);
            cell->setProperty("Value",column5);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 6);
            cell->setProperty("Value",column6);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 7);
            cell->setProperty("Value",column7);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 8);
            cell->setProperty("Value",column8);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 9);
            cell->setProperty("Value",column9);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 10);
            cell->setProperty("Value",column10);

            cell = sheet->querySubObject("Cells(int,int)", nRow, 11);
            cell->setProperty("Value",column11);


            //qDebug() << column1;
            nRow++;
        }
        mExcel->setProperty("DisplayAlerts","False");
        //workbook->dynamicCall("xl.DisplayAlerts = False");
        workbook->dynamicCall("SaveAs(const QString&)", "D:\\201019.xls");

        delete cell;
        cell=NULL;
        delete sheet;
        sheet=NULL;
        sheets->clear();
        delete sheets;
        sheets = NULL;
        workbook->clear();
        delete workbook;
        workbook = NULL;
        workbooks->dynamicCall( "Close" );
        workbooks->clear();
        delete workbooks;
        workbooks = NULL;
        mExcel->clear();
        mExcel->dynamicCall( "Quit" );
        delete mExcel;
        mExcel = NULL;

        

    }


}
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880093
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880104
seg856
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё, все эти строки есть в моем коде. Но результат видите на картинке.
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880106
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seg856ёёёёё, все эти строки есть в моем коде. Но результат видите на картинке.

workbook->clear(); // удалить строку
delete workbook; // удалить строку
workbook = NULL; // удалить строку
workbooks->dynamicCall( "Close" );
workbooks->clear();
delete workbooks;
workbooks = NULL;
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880107
seg856
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i, удалил указанные строки, результат тот же
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880213
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seg856,
Удалите весь лишний код. Осьтавьте только по сути топика.
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880227
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seg856,

да, сделай минимальное приложение, воспроизводящее "проблему".
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880231
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй убрать
Код: plaintext
1.
 mExcel->dynamicCall( "SetVisible(bool)", TRUE );


ЕМНИП изначально эксель запускается без окон и при закрытии файла - процесс экселя завершается, но если сделать его видимым, то автоматом не закрывается, т.е. сам эксель надо еще как-то завершать.
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39880440
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раньше техника работы с только что СОЗДАННЫМ файлом была примерно так:
Create() с tmp именем
тут же Save as() под другим именем
тут же Open()
.....
Close()

Но в Qt я не знаю, в билдере так работало. Иначе при якобы Close() выскакивало евойное сообщение, что типа объект был изменён, сохранить, нет?
Вроде даже в ВБА что-то подобное. В принципе в разделе "офис" можно поискать или спросить.
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39881228
seg856
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, спасибо. Действительно, скрытый Excel нормально закрывается.
...
Рейтинг: 0 / 0
QT C++, приложение Excel остается открытым после закрытия
    #39881938
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чтоб в это время пользователь не редактировал в эксе.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT C++, приложение Excel остается открытым после закрытия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]