Форум программистов, компьютерный форум CyberForum.ru

Программа всегда открывает один и тот же файл excel - C++ COM

Восстановить пароль Регистрация
 
Kitarius
0 / 0 / 0
Регистрация: 26.02.2016
Сообщений: 6
23.05.2016, 10:26     Программа всегда открывает один и тот же файл excel #1
Всем здрасти.

Помогите разобраться. Пытаюсь работать с Excel через OLE. Могу считывать данные с вкладок, ячеек, редактировать данные и т.д. Но почему-то всегда программа открывает файл экселя, который был открыт в самый первый раз - например, со старта я работаю с файлом test1.xlsx, провожу с ним необходимые манипуляции, после чего закрываю программу. Затем я хочу открыть файл test2.xslx, но вновь открытая программа все равно производит выборку из файла test1.xlsx. Вот пример кода. Где я косячу?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    if (OpenDialog1->Execute())
    {
        StatusBar1->Panels->Items[1]->Text= OpenDialog1->FileName;
        Excel=CreateOleObject("EXCEL.Application");
        Book=Excel.OlePropertyGet("Workbooks").OlePropertyGet("Open", OpenDialog1->FileName.c_str()); 
 
        Sheet1=Book.OlePropertyGet("Worksheets", 1);
 
        Columns_Sheet1=Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Columns").OlePropertyGet("Count");
        Rows_Sheet1=Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Rows").OlePropertyGet("Count");
            
    //далее чтение из файла в стринггрид, после чего файл мне не нужен. 
        
 
    Excel.OleProcedure("Quit");
    ShowMessage("Done");
    }
P.S. Версия экселя 2013, Билдер XE8
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2016, 10:26     Программа всегда открывает один и тот же файл excel
Посмотрите здесь:

Excel 2007 и Win32 Console application. Не выводятся в ячейки Excel данные из приложения C++ COM
C++ COM Работа с Excel
C++ COM Builder+Excel
C++ COM C++ and Excel
C++ COM C++ and Excel
C++ COM Диаграмма в Excel
C++ COM Cpp builder-Ole-Excel. WideString пишет в ячейку Excel минус перед нулем
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2723 / 1734 / 172
Регистрация: 13.01.2012
Сообщений: 6,490
23.05.2016, 14:14     Программа всегда открывает один и тот же файл excel #2
Kitarius, чудес не бывает вы открываете то что указано в OpenDialog1->FileName
Kitarius
0 / 0 / 0
Регистрация: 26.02.2016
Сообщений: 6
23.05.2016, 14:41  [ТС]     Программа всегда открывает один и тот же файл excel #3
Спасибо за ответ. Но я понимаю, что я открываю именно то, что указано в OpenDialog1->FileName. Вот сейчас специально вывел это значение с помощью ShowMessage. Помимо того, что оно выводится в StatusBar. полное имя файла меняется, но в гриде все равно первый открытый екселевский файл, а не тот, который я пытаюсь открыть
vxg
Модератор
 Аватар для vxg
2723 / 1734 / 172
Регистрация: 13.01.2012
Сообщений: 6,490
23.05.2016, 14:46     Программа всегда открывает один и тот же файл excel #4
Цитата Сообщение от Kitarius Посмотреть сообщение
а не тот, который я пытаюсь открыть
сравните свой код с вот этим
C++
1
2
3
4
5
6
7
8
9
    Variant app = CreateOleObject("Excel.Application");
    Variant wbs = app.OlePropertyGet("Workbooks");
    Variant wb = wbs.OleFunction("Open", "C:\\test.xls");
    Variant wss = wb.OlePropertyGet("Worksheets");
    Variant ws = wss.OlePropertyGet("Item", 1);
    Variant cell = ws.OlePropertyGet("Cells", 1, 1);
    cell.OlePropertySet("Value", 456);
    wb.OleProcedure("Save");
    app.OleProcedure("Quit");
я вижу что у вас open это почему то свойство, но это совсем не свойство, а функция может по этому, дальше не проверял
Kitarius
0 / 0 / 0
Регистрация: 26.02.2016
Сообщений: 6
24.05.2016, 08:59  [ТС]     Программа всегда открывает один и тот же файл excel #5
vxg, спасибо за ответ. Откомпелировал Ваш код. Первый запуск - открываю файл C:\\test.xls - все замечательно. Закрываю программу. Изменяю в коде файл на "C:\\test1.xls, запускаю программу и у меня все равно открывается файл C:\\test.xls!! При чем программа работает так на нескольких машинах, с разными версиями ОС и Excel!! Единственное, что я не пробовал - это перекомпилировать на другой версии студии
vxg
Модератор
 Аватар для vxg
2723 / 1734 / 172
Регистрация: 13.01.2012
Сообщений: 6,490
24.05.2016, 09:09     Программа всегда открывает один и тот же файл excel #6
Kitarius, это невозможно, а компилируется ли вообще у вас программа?
Kitarius
0 / 0 / 0
Регистрация: 26.02.2016
Сообщений: 6
24.05.2016, 09:15  [ТС]     Программа всегда открывает один и тот же файл excel #7
vxg, экзешник при компиляции меняется. Сейчас попробую переставить билдер. Если не поможет, займусь операционкой.
volvo
Супер-модератор
 Аватар для volvo
22080 / 14385 / 4044
Регистрация: 22.10.2011
Сообщений: 25,452
Записей в блоге: 2
24.05.2016, 09:16     Программа всегда открывает один и тот же файл excel #8
Операционка-то при чем, если откомпилированное приложение работает одинаково неправильно
Цитата Сообщение от Kitarius Посмотреть сообщение
на нескольких машинах, с разными версиями ОС и Excel
?
Kitarius
0 / 0 / 0
Регистрация: 26.02.2016
Сообщений: 6
24.05.2016, 09:21  [ТС]     Программа всегда открывает один и тот же файл excel #9
Цитата Сообщение от volvo Посмотреть сообщение
Операционка-то при чем, если откомпилированное приложение работает одинаково неправильно
Протупил. Но я уже просто вообще не понимаю, что это может быть.
vxg
Модератор
 Аватар для vxg
2723 / 1734 / 172
Регистрация: 13.01.2012
Сообщений: 6,490
24.05.2016, 09:45     Программа всегда открывает один и тот же файл excel #10
Kitarius, хоть я и понимаю что занимаюсь ерундой но специально для вас дабы снизить количество кругов нарезаемых вами вокруг трех сосен прямо сейчас проверил тот код что я вам дал - все работает так как должно работать - если test - значит пишет в test, если test1 - в test1. возможно у вас что то со средой или правами доступа из за которых изменения вносимые в исходник не вносятся в приложение или хз что
Kitarius
0 / 0 / 0
Регистрация: 26.02.2016
Сообщений: 6
24.05.2016, 09:48  [ТС]     Программа всегда открывает один и тот же файл excel #11
vxg, огромное Вам спасибо, что Вы тратите на меня свое время
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2016, 18:40     Программа всегда открывает один и тот же файл excel
Еще ссылки по теме:

C++ COM OLE. Как переименовать созданный файл в Excel.Application?
C++ COM Открыть файл xlsx (2007), обработать информацию и сохранить в аналогичный файл. Какие библиотеки использовать?
C++ COM Работа в Excel из VS
C++ COM Программа для работы с Excel и Word документами
C++ COM Не удается открыть файл Excel

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Unknownx
Заблокирован
29.05.2016, 18:40     Программа всегда открывает один и тот же файл excel #12
Kitarius, думаю в ODBC драйвере у тебя тот файл прописан вот и не помогает изменение, покажи свойства своих источников данных Excel
Yandex
Объявления
29.05.2016, 18:40     Программа всегда открывает один и тот же файл excel
Ответ Создать тему
Опции темы

Текущее время: 08:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru