|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
Чтение/запись в Excel с COM OLE C++24.01.2019, 21:21. Показов 59947. Ответов 71
Метки нет (Все метки)
Здравствуйте,
Подскажите пожалуйста, есть ли у кого пример кода чтения и записи данных из/в откртый ексель файл с помощью COM/OLE на чистом С++. Есть микрософтовский пример: https://support.microsoft.com/... -or-import Он создает ексель файл и записывает в него данные, но как записать данные в уже открытый ексель, как этот ексель файл отловить, такого примера нет, а доработать/изменить микрософтовский примера под свою задачу, для меня на данный момент, к сожалению совершенно не возможно, настолько там все сложно. Может кто нибудь делал нечто подобное.
0
|
|
| 24.01.2019, 21:21 | |
|
Ответы с готовыми решениями:
71
Cpp builder-Ole-Excel. WideString пишет в ячейку Excel минус перед нулем Общение с Excel через OLE
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||||||
| 22.02.2019, 20:18 [ТС] | |||||||||||
|
Простым опытным путем выяснил, что:
0
|
|||||||||||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
|
| 22.02.2019, 20:23 | |
|
Optimus11, способ плохой. Сделайте то что хотите в VBA - там можно и список функций и свойств посмотреть и справку по ним почитать - потом перенесите в C++
0
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
| 22.02.2019, 20:29 [ТС] | ||||||
|
Прошу прощение, решил самым простым способом:
PS: Мне смотреть формат ячейки ексель нужно для того, что, когда я "читаю" значения из екселя в виде текста BSTR и если в этот момент в ясейке ексель находится не текст, а число, то происходит краш приложения, поэтому и хочу опредеять формат ячейки, если текстовый, то применять BSTR, если числовой, то LONG, а потом уже ковентировать в string/
0
|
||||||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
|||||||||||
| 23.02.2019, 21:09 | |||||||||||
Сообщение было отмечено Optimus11 как решение
Решение
Optimus11, еще раз - это плохой способ - просто потому что значение хранимое в ячейке это совсем не формат ячейки. как быть?
1) запускаете Excel 2) включаете запись макроса 3) делаете нужные вам действия, например, устанавливаете формат ячейки в текстовый 4) выключаете запись макроса 5) идете в VBA (Alt + F11), открываете модуль в который записался макрос и читаете его содержимое, у меня оно примерно такое:
Добавлено через 1 час 25 минут Optimus11, если проблема именно в том что не понятно что лежит в ячейке то можно поступать как то так
1
|
|||||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 27.02.2019, 21:29 [ТС] | |
|
vxg, Огромное спасибо! Это прям, то что нужно.
0
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
| 05.03.2019, 19:38 [ТС] | ||||||
|
Здравствуйте,
Не могу разобраться, как можно выбирать рабочий лист екселя, а не только использовать активный ? Есть из msdn`овского примера, вот эти строки:
Но, какая строка в autowrape, куда все эти параметры передаются, может отвечать за выбор нужно листа, а не активного, что то вообще ни как не могу понять.
0
|
||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||||||
| 06.03.2019, 13:23 [ТС] | |||||||||||
|
Решено добавлением еще одно параметра в AutoWrap:
Но, я совершенно не понимаю, как это работает. Autowrap - это функция, которая, если я правильно понимаю принимает в себя 5 параметров, но если смотреть, то Name_sheet - это 6ой параметр, как он туда тогда передается ?:
0
|
|||||||||||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
|
| 06.03.2019, 18:17 | |
|
Optimus11, есть такая штука «функции с переменным количеством аргументов»
0
|
|
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
||||||
| 09.03.2019, 08:02 | ||||||
|
Optimus11
0
|
||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||||||
| 18.01.2020, 08:59 [ТС] | |||||||||||
|
Здравствуйте,
Подскажите пожалуйста, вот есть к примеру:
Но вопрос в другом, вот теперь есть к примеру:
И вот вопрос, как сказать екселю, чтобы он данный ему массив data_unicode.c_str() - воспринимал как набор байт юникода и преобразовывал в символы юникод, а не по умолчанию в ascii ?
0
|
|||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 18.01.2020, 11:12 | |||||||
1
|
|||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||
| 18.01.2020, 11:25 [ТС] | |||
|
И буковка L если я правильно понимаю преобразует ascii символ или строку в utf16. Есть текстовый txt документ , в нем соотвесвенно ест текст в кодировке utf8, я его считывают getline'ом в string, и с помощью обертки COM записываю в ексель, но записываются абракадабры. Вопрос как записать тонда чтобы были нормальные символы ?
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 18.01.2020, 11:41 | |||
|
Добавлено через 2 минуты В общем, там надо будет по-любому конвертировать в юникод-строку, BSTR.
1
|
|||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 18.01.2020, 11:51 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 18.01.2020, 15:35 | ||
|
Она преобразовывает именно в то, что нужно передавать в excel. Или тебе не это надо?
1
|
||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 18.01.2020, 15:56 [ТС] | ||
![]() Я не совсем тогда понимаю, как это функция работает, как я понял на вход она принимает массив чаров в стиле строки Си, а на выходе то, что она выдает ?
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 18.01.2020, 16:11 | |||||||
Сообщение было отмечено Optimus11 как решение
Решение
1
|
|||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 18.01.2020, 17:43 [ТС] | |
|
0
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 23.01.2020, 21:34 [ТС] | |
|
Спасибо!
Все это работает, но я уже голову сломал, не могу, откудато в появляется после преобразованного чимвола мусор. Причем муссор появляется не в буффере, потому как его размер просто ограничен ровно тем каюоличеством, которые нудны по сисвол utf16. Мусор появляется уже в екселе почему то.
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 23.01.2020, 21:39 | |
|
0
|
|
| 23.01.2020, 21:39 | |
|
Чтение из Excel в StringGrid Работа с БД SQLite 3: чтение, запись
Запись и чтение Excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж»
Уважаемые коллеги!
Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
|
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
|
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|