Adamos, какая разница что я чем куда прибиваю, а важнее другое что за 30 лет существования майкрософт офиса - нет нормальной библиотеки для работы с оным
Skirikikaka, M$ офис - часть M$ инфраструктуры, по большей части закрытой.
Внезапно, за все время существования виндов чертова туча M$-овского добра имела проблемы с тем, чтобы с ним работать со стороны. Поэтому и вопрос - сам-то зачем полез? И почему Кресты, а не Шарп, который сам же M$ сует всем, кто хочет с ними связываться, прямо в руки?..
Skirikikaka, ну например то что для потребителя (разработчика приложения, которое использует эту библиотеку) буквально никаких бенефитов эта лицензия не приносит, зато приносит много головной боли
MS Excel/Word (и наверное и другие продукты из состава MS Office) предоставляют ActiveX объекты, которые могут быть использованы напрямую без всяких библиотек, любыми языками умеющими в ActiveX. А С++ это умеет, потому что собственно винда умеет и предоставляет соответствующие интерфейсы.
Так что можете покопать в этом направлении.
Для затравки можно, например, попробовать написать что-нибудь легкое с использованием Excel ActiceX объектов на скриптовых языках VBS или JS (интерпретатор есть в винде из коробки - cscript/wscript), для понимания как с ним вообще работать, потом это можно будет адаптировать на С++, если останется желание. Просто в VBS/JS работать с ActiveX объектами очень просто, в С++ будет немного сложнее.
Этот подход, естественно, требует установленного Excel на компе.
Технология ActiveX уже старая и подзабытая, нынче не особо модная, но это не значит, что она не работает.
res2001, ни для чего, кроме откровенных костылей, использовать - а тем более, изучать - ActiveX уже не стоит.
Нечего ловить на кладбище технологий M$, у них в перспективе - только очередное разбитое корыто.
Если уж позарез нужно работать с офисными форматами - есть OO/LO и их библиотеки и обвязки, они хотя бы не окажутся "с понедельника покупаем новые компьютеры и новый пакет, тот больше не поддерживается".
Adamos, В целом согласен, но если надо быстро закрыть какую-то задачу, то почему бы и нет.
К тому же я не предлагал изучать технологию, пользоваться этим достаточно просто. Писать свои объекты - это совсем другое и сейчас не нужно этого делать.
res2001, но это будет работать только на Винде, только если на ней установлен офис, и при этом достаточно медленно.
А автор ещё походу и под mingw это хочет использовать, так что ActiveX вдвойне мимо.
Василий Банников, Про установленный офис я писал, винда - вытекает из установленного офиса.
На счет медленно - вопрос спорный, я не замерял. Лично я использовал для каких-то мелких задач лет 15 назад и не на С++, вполне хватало скорости. Как оно сейчас работает не в курсе, вряд ли медленнее стало.
mingw в данном случае не помеха, т.к. интерфейс к COM объектам предоставляет ОС и он не зависит от используемого компилятора.
В целом я не настаиваю. Просто предложил альтернативный вариант, доступный из коробки (зависимость от офиса в данном случае не считаю проблемой, т.к. ТСу нужно работать с xls файлами, а значит офис и винда у него точно есть). Все недостатки тут уже хорошо описали. Выбор за ТС.
res2001,
1. Автор нигде не пишет, что нужно работать со старыми xls файлами.
2. То что у ТС есть офис - не значит, что он будет на машине, где программа будет запущена.
Excel файлы же не только на пользовательской машине могут открываться, но и где-нибудь на сервере для анализа данных (которые по какой-то причине выдаются в формате xlsx), либо для генерации файлов из этих данных.
3. Не факт, что у ТС в принципе есть офис - xlsx успешно открывается в куче разных программ, начиная с libre office, заканчивая импортозамещёнными офисными пакетами и всякими китайскими wps office.
4. "вполне хватало скорости" - понятие растяжимое. Может для открытия небольшого файла и чтения пары значений из него достаточно, но при этом не достаточно для генерации множества файлов для многих клиентов.
Skirikikaka, "думаю" или "знаю"?) По какой причине uint64_t не должно собираться на 32 битах?
У 32 бит ограничение - это то что адресовать можно только 4гб памяти, так как размер указателя = 32 бит.