-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
1 | |
Чтение/запись в Excel с COM OLE C++24.01.2019, 21:21. Показов 57512. Ответов 71
Метки нет Все метки)
(
Здравствуйте,
Подскажите пожалуйста, есть ли у кого пример кода чтения и записи данных из/в откртый ексель файл с помощью COM/OLE на чистом С++. Есть микрософтовский пример: https://support.microsoft.com/... -or-import Он создает ексель файл и записывает в него данные, но как записать данные в уже открытый ексель, как этот ексель файл отловить, такого примера нет, а доработать/изменить микрософтовский примера под свою задачу, для меня на данный момент, к сожалению совершенно не возможно, настолько там все сложно. Может кто нибудь делал нечто подобное.
0
|
24.01.2019, 21:21 | |
Ответы с готовыми решениями:
71
Cpp builder-Ole-Excel. WideString пишет в ячейку Excel минус перед нулем Общение с Excel через OLE
|
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
|
|
24.01.2019, 21:28 | 2 |
Optimus11, могу ошибаться на память но пробовали ли вы получать доступ к объекту не через CreateObject а через GetObject?
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
24.01.2019, 22:29 [ТС] | 3 |
Насколько я понимаю, CreateObject и GetObject - нет в COM. Вроде как
![]()
0
|
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
|
|
25.01.2019, 07:53 | 4 |
Optimus11, с названиями может что попутал. может это GetActiveObject. тут что то про него может поможет https://stackoverflow.com/ques... l-instance
1
|
![]() |
|||||||||||
25.01.2019, 11:07 | 5 | ||||||||||
Есть пример записи и чтения на чистом automation + С++
Кликните здесь для просмотра всего текста
запись
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||||||
27.01.2019, 10:10 [ТС] | 6 | ||||||||||
1)
0
|
![]() |
||||||
27.01.2019, 11:09 | 7 | |||||
1) это предупреждение, а не ошибка
https://stackoverflow.com/ques... c-2010-exp 2) а если так
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
27.01.2019, 17:17 [ТС] | 8 | |||||
Подскажите еще пожалуйста, а "excelReaderWriter.hpp", его как то нужно предварительно создать ?
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||||||||||||
27.01.2019, 20:39 [ТС] | 10 | |||||||||||||||
1)
Заменил mbstowcs на mbstowcs_s, как предложил VS, но после замены VS, говорит, что mbstowcs_s не поддерживает ввод трех аргументов. Поставил #define _CRT_SECURE_NO_WARNINGS, все равно вылазит предупреждение. В настройках проекта С/C++ в препроцессоре убрал - %(PreprocessorDefinitions), все равно вылазит предупреждение. Да, как его это предупреждение убрать то ? ![]() 2)
В "i < str.size()" - показывается предупреждение - "<: не соответствие типов со знаком и без знака" Если я правильно понял, это может быть, как то связано с тем, что str - это тип string, а не число ? Или так и нужно и предупреждение можно игнорировать ? 3)И еще одно предупреждение:
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
28.01.2019, 15:05 [ТС] | 12 |
Тоже самое, выводится ошибка.
![]() Добавлено через 1 час 27 минут Да блин, пробывал: -#define _CRT_SECURE_NO_WARNINGS #pragma warning(suppress : 4996) В настройках проекта писал: -_CRT_SECURE_NO_WARNINGS -_CRT_SECURE_NO_WARNINGS_GLOBALS -Проверки SDL: пусто Все равно выводится этот warnongs. ![]()
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
29.01.2019, 19:01 [ТС] | 13 |
Здравствуйте,
Запись данных в ексель файл замечательно работает! Но может быть Вы могли бы подсказать, как все таки записать данные в файл не в новый созданный, а в уже открытый ?
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
30.01.2019, 12:18 [ТС] | 14 |
Или так невозможно записать данные в открытый ексель ?
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
05.02.2019, 11:05 [ТС] | 15 | |||||
Здравствуйте,
Получилось реализовать запись данных в открытый активный файл ексель, но есть вопрсик по поводу выделения диапазона для записи. Вот часть все из того же примера микрософт:https://support.microsoft.com/... -or-import :
Может, кто может подсказать, как динамически можно выделять такой диапазон ? Я думал что можно просто в string или char сгегерировать нужны диапазон в щависимости от размера и просто вставить в Sysallocstring(), но компилятор ругается, что нет методов преобразрвания из string или char в Olechar. ![]()
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
17.02.2019, 22:23 [ТС] | 16 | |||||
Запись данных в активный файл ексель получилось сделать.
Теперь вопрос по поводу того, как прочитать данные из екселя. Нашел пример чтения данных в тип double, отрывок кода:
Или может, кто подскажет, как работает данная строка: DOUBLE ival = rngResult.dblVal; Потому что нельзя просто так взять и заменить double на string...
0
|
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
|
|
18.02.2019, 07:54 | 17 |
Optimus11, там VARIANT - это такой union для хранения всего на свете. Что именно хранится записано в его типе.
1
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||||||||||||||||||||||
18.02.2019, 19:23 [ТС] | 18 | |||||||||||||||||||||||||
vxg, Спасибо!
Нашел вот тут: https://docs.microsoft.com/ru-... tagvariant
0
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
21.02.2019, 22:59 [ТС] | 19 | |||||
Все разобрался, надо просто BSTR конвертировать в string.
Может быть кто нибудь сможет еще подсказать, вот есть это autowrap функция:
0
|
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
|
|
22.02.2019, 07:50 | 20 |
Optimus11, по памяти (могу ошибаться) эта функция самописная и помещает тип, имя и аргументы вызываемой функции в структуры используемые при invoke обращении к dispatch интерфейсу объекта, делает этот вызов и выковыривает из структур ответа возвращаемы данные
0
|
22.02.2019, 07:50 | |
Помогаю со студенческими работами здесь
20
Чтение из Excel в StringGrid Работа с БД SQLite 3: чтение, запись
Запись и чтение Excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Введение в Dapr для разработчиков .NET
UnmanagedCoder 18.03.2025
Разработка распределенных систем никогда не была настолько востребованной и одновременно такой сложной. Если вы . NET разработчик, то наверняка сталкивались с необходимостью жонглировать обнаружением. . .
|
Собеседование по Spring Boot: продвинутые вопросы и ответы
Javaican 18.03.2025
Собеседования на позиции старших разработчиков и архитекторов требуют глубокого понимания внутренних механизмов Spring Boot, нюансов конфигурирования, подходов к оптимизации и построению сложных. . .
|
Перечисления в TypeScript: использование и лучшие практики
run.dev 18.03.2025
Пишете код и устали от разбросанных по проекту "волшебных" строк и чисел? Знакомая ситуация: где-то в глубине кода притаилась строка "ADMIN", а в другом месте используется "admin". И вот уже. . .
|
Фишки Kotlin, которые все любят
Javaican 18.03.2025
Помню, как скептически относился к появлению "ещё одного языка для JVM" — мол, зачем нам что-то новое, когда есть Java? Но первый же проект на Kotlin заставил меня пересмотреть свое мнение. Код стал. . .
|
Списки и кортежи в Python: различия, особенности, применение
py-thonny 18.03.2025
Если вы когда-нибудь писали код на Python, то наверняка сталкивались с конструкциями вида или ('имя', 25, 'инженер'). Это и есть списки и кортежи — последовательности, хранящие упорядоченные наборы. . .
|
Интеграция JavaScript в Haskell
golander 18.03.2025
Ключевая особенность нового JS-бэкенда GHC — возможность создавать колбэки из JavaScript в Haskell-код. Это открывает дорогу разработке полноценных браузерных приложений, позволяя реагировать на. . .
|
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
|
Предсказание ветвлений - путь к высокопроизводительному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
|
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
|
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
|