|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
Чтение/запись в Excel с COM OLE C++24.01.2019, 21:21. Показов 59981. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
|
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
|
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
====================================================================
КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM)
====================================================================
. . .
|
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ
Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
|
|
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|