19 / 18 / 1
Регистрация: 10.01.2017
Сообщений: 944
|
|
1 | |
Чтение/запись в Excel с COM OLE C++24.01.2019, 21:21. Просмотров 11394. Ответов 70
Метки нет Все метки)
(
Здравствуйте,
Подскажите пожалуйста, есть ли у кого пример кода чтения и записи данных из/в откртый ексель файл с помощью COM/OLE на чистом С++. Есть микрософтовский пример: https://support.microsoft.com/... -or-import Он создает ексель файл и записывает в него данные, но как записать данные в уже открытый ексель, как этот ексель файл отловить, такого примера нет, а доработать/изменить микрософтовский примера под свою задачу, для меня на данный момент, к сожалению совершенно не возможно, настолько там все сложно. Может кто нибудь делал нечто подобное.
0
|
|
24.01.2019, 21:21 | |
Cpp builder-Ole-Excel. WideString пишет в ячейку Excel минус перед нулем Общение с Excel через OLE
|
|
19 / 18 / 1
Регистрация: 10.01.2017
Сообщений: 944
|
|
05.02.2020, 16:09 [ТС] | 62 |
Подскажите пожалуйста, я правильно понимаю, что COM не дает возможность работать с файлом екселя, который не открыт ?
0
|
24.11.2020, 18:04 | 64 | ||||||||||
Возможно ли забирать и передавать массив Variant-ов по ссылке или указателю (а не по значению)? Ибо операции получения данных и выгрузка на лист Excel дольше чем сам расчет.
Сейчас делаю так: Automation helper function... Кликните здесь для просмотра всего текста
0
|
2 / 2 / 0
Регистрация: 27.04.2015
Сообщений: 57
|
||||||
21.01.2021, 14:22 | 65 | |||||
Приветствую всех читающих
![]() Пытаюсь работать с Экселем через OLE, а в частности использую функцию AutoWrap со страницы примера автоматизации от MS. При попытках выбрать нужный лист, оно не работает, выдает ошибку гласящую, как я понял, о том что объект не подключен к COM (0x800401FD). Ниже описал последовательность действий ("лишнее" убрал, потому это не полный код). И вот при выборе диапазона ячеек (Range) вылетает ошибка. Если же использовать "ActiveSheet" то работает нормально... Я полагаю ошибка именно в последовательности, но в руководстве к этим командам не нашел никаких оговорок. Пробовал применять к книге и листу "Activate" - без толку (зачем вообще это нужно?). Кликните здесь для просмотра всего текста
0
|
19 / 18 / 1
Регистрация: 10.01.2017
Сообщений: 944
|
||||||
21.01.2021, 15:13 [ТС] | 66 | |||||
0
|
2 / 2 / 0
Регистрация: 27.04.2015
Сообщений: 57
|
|
21.01.2021, 15:36 | 67 |
Optimus11
Спасибо! Но это как то не соответствует документации Оо ActiveSheet - не должен принимать параметров: https://docs.microsoft.com/en-... ctivesheet Да и выбирать лист по имени не очень удобно, по крайней мере мне хотелось бы по индексу. Должен же быть более "правильный" способ работать с любым листом или я что-то не так понял? А если несколько одноименных листов и в разных книга, то что выберется?
0
|
21.01.2021, 16:22 | 68 | |||||
Foton6, вы что-то намудрили.
Вот, все работает нормально, массив забираю с листа нужного индекса
0
|
2 / 2 / 0
Регистрация: 27.04.2015
Сообщений: 57
|
|
21.01.2021, 16:54 | 69 |
bedvit
Мдаааа, опять видимо моя невнимательность сыграла, сейчас все работает хотя ничего не трогал можно сказать Оо Ну и ладненько, а то я уж было подумал надо каждый объект активировать перед тем как с ним работать О.О
0
|
2 / 2 / 0
Регистрация: 27.04.2015
Сообщений: 57
|
|
22.01.2021, 00:39 | 70 |
Опять возник затык...
Пытаюсь очистить выбранный "Range" при помощи "Clear" или "ClearContents", но вылетает ошибка: 0x800a03ec Методом тыка выяснил что это происходит при попытке чистить объединенные ячейки. Попробовал вместо них использовать "Delete", но тогда прилетает диалог предупреждающий о потере данных и необходимости принять волевое решение и нажать да или нет. Как с этим быть подскажите? >_< А пока гуглил приведенный номер ошибки выяснил что она может вылетать если новым экселем (2010+) открыть xls и пытаться манипулировать ячейками в которых первым символом идет " = ". И единственный совет: убедитесь что у вас ни одна ячейка не начинается с "="...
0
|
2 / 2 / 0
Регистрация: 27.04.2015
Сообщений: 57
|
|
22.01.2021, 22:14 | 71 |
Хм, если записываемое значение это строка и она начинается с символа "=" то прилетает ошибка 0x80020009.
-6 часов, прелесть.
0
|
22.01.2021, 22:14 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Чтение из Excel в StringGrid Работа с БД SQLite 3: чтение, запись
Запись и чтение Excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |