исходный код open office
Автоматизация OpenOffice: Начало
По работе мне необходимо было разработать механизм загрузки и выгрузки данных из Excel используя свободные механизмы работающие под разными ОС.
Т.к. необходимо было, чтобы сервис работал под Linux, то механизм взаимодействия через OLE не подходил.
Для реализации был выбран OpenOffice с прямым доступом к API через C++.
Документация оказалась весьма скудная, а примеров работы не через OLE почти не было. Так что я решил объединить все мои исследования в одной статье на хабре.
Примерный план статьи:
1. Начало работы с API OpenOffice через C++
1.1. Генерация заголовочных файлов
1.2. Генерация файла типов RDB
1.3. Настройка Visual Studiо 2008
1.4. Собираем динамическую DLL
2. Повторное использование DLL в своей программе
2.1. Пример небольшой программы по выгрузке данных
В принципе, если возможностей DLL достаточно, то повторять действия п. 1 не обязательно.
1. Начало работы с API OpenOffice через C++
Этот раздел достаточно подробно описан в вики офиса: wiki.services.openoffice.org/wiki/SDKInstallation.
Для начала работы с API необходимо скачать SDK с адреса download.services.openoffice.org/files/stable. Важно чтобы версия SDK совпадала с версией установленного офиса.
Устанавливаем SDK в любую дирректорию.
Устанавливаем вспомогательные утилиты gnu make, zip (если необходимо)
1.1. Генерация заголовочных файлов
Внутри директории с SDK должен быть батник setsdkenv_windows.bat, генерирующий другой батник.
Выполняем его, отвечая на вопросы.
Будет сгенерирован батник с установками переменных окружения.
Открываем консоль, выполняем сгенерированный батник, и в этойже подготовленной консоли генерируем заголовочные файлы для конкретной версии офиса.
1.2. Генерация RDB файла типов.
Также для начала работы нужно сгенерировать RDB файл конкретно для вашей версии офиса.
RDB файл — это что-то типа файла с описаниями типов и интерфейсов конкретной версии OpenOffice.
Делается это командой:
«C:\Program Files\OpenOffice.org 3\URE\bin\regmerge» «d:\oo\OOAPI\Debug\OOAPI.rdb» / «c:\Program Files\OpenOffice.org 3\URE\misc\types.rdb»
, где C:\Program Files\OpenOffice.org 3\ — путь до офиса
d:\oo\OOAPI\Debug\ — путь, куда будет сгенерирован файл
1.3. Настройка Visual Studiо 2008
Подключаем заголовочные файлы и либы:
Свойства проекта:
Сменяем конфигурацию на «All Configurations»
Добавляем дополнительные либы
Properties->Linker->ComandLine в Additional Options
добавляем либы:
isal.lib icppu.lib icppuhelper.lib isal.lib isalhelper.lib ireg.lib irmcxt.lib stlport_vc71.lib
Всё готово для создания консольных программ по работе с офисом.
1.4. Собираем динамическую DLL
План работы DLL примерно такой:
— При старте программы проверяем наличие RDB файла, если его нет, то происходит генерация.
Функции connect, genRdb
Если нет прав администратора на компьютере, то RDB лучше сгенерировать взаранее для типовой версии офиса.
— Стартуем сервер OpenOffice, устанавливаем ему порт для прослушки
startServer, адрес сервера офиса узнается из рееста функцией getOOPath
— Программа подключается к серверу офиса
— создается новый фрейм офиса: новый файл или имортируется xls файл.
— После этого можно посылать команды для управления содержанием
— экспортируем xls файл на диск
функция exportToUrl
— возможен и обратный механизм: имопрт xls файл и чтение из него данных
функциями getVal, getText
Прилагаю код DLL, надеюсь комментариев будет достаточно. Полный проект можно скачать по ссылке.
Apache OpenOffice 4.0: игра по новым правилам
Третья версия OpenOffice.org вышла в далеком 2008 году. За пять лет, которые разделяют третий и четвертый релиз, в жизни офисного пакета произошло немало событий, для понимания которых, однако, стоит погрузиться в немного более далекое прошлое.
⇡#Немного истории
Напомним, что самая популярная альтернатива Microsoft Office была создана на основе коммерческого набора приложений StarOffice.
В 2000 году компания Sun Microsystems открыла исходный код пакета и пообещала передать управление им сообществу, а также создать некоммерческую организацию, которая будет заниматься разработкой OpenOffice.org. На деле же права на код в течение десяти лет оставались у Sun, а управление развитием приложения велось только в рамках компании. Все программисты, которые вносили улучшения в исходный код OpenOffice.org, должны были подписать соглашение, по которому все их наработки передавались компании Sun Microsystems. Последняя использовала улучшения в OpenOffice.org в качестве основы для пакета StarOffice, коммерческие лицензии на который продолжали продаваться. В 2005 году Sun Microsystems также предоставила лицензию на использование кода OpenOffice.org компании IBM, которая позже выпустила на его основе свой пакет Lotus Symphony. В течение многих лет все это вызывало накапливавшееся недовольство у сторонних разработчиков.
В начале 2010 года компания Sun Microsystems была поглощена корпорацией Oracle, пакет StarOffice был переименован в Oracle Open Office, однако политика по отношению к сообществу разработчиков не изменилась. Oracle Corporation самостоятельно принимала решения относительно дальнейших планов по улучшению OpenOffice.org.
В сентябре 2010 года терпению разработчиков пришел конец. Они основали некоммерческую организацию The Document Foundation и сообщили, что отныне не зависят ни от кого и могут сами принимать решения относительно приоритетов разработки. В январе 2011 года вышла первая версия их офисного пакета LibreOffice, основанного на OpenOffice.org. Слово libre в его названии имеет латинские корни и означает «свобода». За прошедшие пару лет практически все независимые разработчики перешли в проект LibreOffice. Новый офисный пакет стали включать в самые популярные дистрибутивы Linux вместо OpenOffice.org. Сегодня LibreOffice входит в состав Ubuntu, Fedora, openSUSE и других дистрибутивов. Даже собственный дистрибутив Oracle — Oracle Linux — включает LibreOffice.
А что же OpenOffice.org? Лишившись поддержки сообщества пользователей и независимых разработчиков, корпорация Oracle поняла, что больше не сможет ни продвигать коммерческий пакет Oracle Open Office, ни своими силами разрабатывать OpenOffice.org. Поэтому в апреле 2011 года все штатные разработчики офисного пакета были уволены, а в июне того же года все торговые марки и код были переданы некоммерческой организации Apache Software Foundation и стали доступными на условиях лицензии Apache License. Эта организация обеспечивает поддержку более чем 150 проектов с открытым кодом, в числе которых платформа для обработки данных Hadoop, программа Apache Web server и так далее.
Интересно, что в 2012 году та же самая Apache Software Foundation получила в свое распоряжение еще один бесплатный офисный пакет, который оказался ненужным разработчикам, — IBM Lotus Symphony. Известно, что многие люди, которые приложили руку к созданию офисного пакета от IBM, теперь составляют ядро постоянных разработчиков OpenOffice. Офисному пакету, который когда-то принадлежал компании Sun, повезло немного больше, чем Lotus Symphony, — его разработка продолжается, несмотря на все перипетии.
⇡#Основные изменения
У OpenOffice.org теперь новое название — Apache OpenOffice. Предыдущая версия, Apache OpenOffice 3.4, хоть и была выпущена под именем Apache, однако фактически разрабатывалась еще в Oracle. Бета-версия OpenOffice.org 3.4 увидела свет еще в апреле 2011 года, до передачи прав на пакет организации Apache Software Foundation. Когда год спустя, в мае 2012 года, вышел Apache OpenOffice 3.4, оказалось, что никаких улучшений по сравнению с бета-релизом нет. В течение года велась работа лишь над тем, чтобы привести программу в соответствие с новой лицензией. В результате в OpenOffice 3.4 впервые не входила Java, а также было существенно уменьшено число поддерживаемых языков. OpenOffice.org «говорил» более чем на 110 языках, а в OpenOffice 3.4 их было менее двадцати. Тем не менее, согласно статистике, версию 3.4 с мая 2012 года скачали более 58 миллионов раз.
Пару дней назад Apache Software Foundation представила первое крупное обновление пакета со времен передачи прав на него новым хозяевам. Главное улучшение Apache OpenOffice 4.0 — наличие боковой панели, которая досталась офисному пакету в наследство от IBM Lotus Symphony. Офисный пакет от IBM был создан на основе старой версии OpenOffice.org, однако за годы разработки Symphony в программы было добавлено несколько уникальных функций, которых не было у конкурирующих бесплатных «офисов».
Боковая панель — одна из них. Это своеобразное решение проблемы наличия в современных офисных пакетах огромного числа функций, к которым часто бывает непросто добраться. Как мы помним, Microsoft решила эту проблему еще в Office 2007, заменив стандартные панели инструментов ленточным интерфейсом, в котором инструменты появляются на ленте именно тогда, когда они нужны пользователю. Примерно то же самое, но в другом исполнении предложили в Lotus Symphony, а теперь — и в OpenOffice 4.0.
Значительную часть экрана занимает боковая панель, содержимое которой меняется в зависимости от того, что делает пользователь. Например, если во время работы с текстовым редактором курсор помещен в середину абзаца, будут доступны средства для форматирования текста, управления абзацами, изменение ориентации страниц и размеров листа. Если добавить в документ графический файл или просто щелкнуть по вставленной ранее картинке, то боковая панель будет уже содержать настройки для изменения параметров изображения, а также выбора режима обтекания его текстом.
Параметры на боковой панели дублируют кнопки стандартных панелей инструментов, которые в четвертой версии по-прежнему стоят на своих местах. Более того, если, например, идет работа с графическим файлом, то над ним автоматически возникает панель «Изображение», кнопки которой тоже дублируют пункты боковой панели. И несмотря на то, что все стандартные панели инструментов можно закрыть, логика все же не совсем ясна — по крайней мере от всплывающих панелей можно было бы отказаться или включить их появление только в том случае, если пользователь не работает с боковой панелью.
Преимущества боковой панели предлагается оценить прежде всего владельцам широкоформатных мониторов с большой диагональю. В этом случае наличие такой панели не слишком уменьшит рабочую область. Впрочем, боковая панель при необходимости легко закрывается, тогда на экране остается лишь узкая вертикальная панелька с кнопками для открытия разных вариантов боковой панели.
Помимо свойств, которые меняются в зависимости от контекста, на боковой панели также могут отображаться стили, навигатор по документу, галерея клипарта. Кажется, что-то подобное впервые появилось в Word лет десять назад… Всего в OpenOffice доступно двадцать два разных набора настроек для боковой панели. Кроме этого, на нее можно выносить элементы управления расширениями. Apache Software Foundation открыла специальный репозиторий для загрузки расширений. В нем можно найти несколько сотен различных дополнений: словарей, наборов шаблонов, инструментов для импорта и экспорта дополнительных типов файлов.
Почти все остальные улучшения OpenOffice 4 касаются работы с графикой. При вставке изображений можно работать с параметрами цветности рисунка: изменять оттенки цветов, контрастность, яркость, гамму. Панель «Цвет», на которой располагаются все эти настройки, тоже, кстати, перекочевала в OpenOffice из Lotus Symphony.
Еще одно улучшение можно увидеть, если обратиться к галерее изображений. В OpenOffice по умолчанию содержится довольно много образцов векторной графики, отсортированных по категориям (компьютеры, транспорт, люди, финансы, школа и прочие). Использовать их можно не только для оформления документов, но и для создания фона страниц или диаграмм.
Коллекцию графики, имеющуюся в программе по умолчанию, можно пополнять своими образцами изображений, в том числе и в формате SVG, который отличается хорошим качеством и небольшим размером файлов. Для импорта файлов PNG поддерживается непрозрачность.
Улучшенную работу с графикой можно оценить и при экспорте различных объектов, в частности диаграмм. В новой версии копирование графики в буфер обмена выполняется без ошибок, с учетом прозрачности и сглаживания. Улучшения в сглаживании можно увидеть и в диалоге предварительного просмотра перед печатью, поскольку документ отображается в нем более корректно.
Приверженцы Microsoft Office также могут обнаружить в OpenOffice 4 некоторые улучшения, которые касаются совместимости с документами DOCX, XLSX и PPTX. Например, новая версия офисного пакета поддерживает больше разных вариантов использования маркированных списков, лучше работает с режимом структуры и со стилями таблиц в Word и PowerPoint.
⇡#Заключение
Итак, у Apache Software Foundation теперь есть два офисных пакета, один из которых больше не разрабатывается. Над OpenOffice работают программисты IBM, которые перенесли панель свойств из Lotus Symphony в новую версию OpenOffice и сделали это главным нововведением четвертой версии пакета.
Можно предположить, что в следующих версиях OpenOffice мы увидим и другие улучшения, позаимствованные из Symphony: открытие документов из разных приложений на отдельных вкладках, окно навигации по открытым документам и так далее. Вот только будет ли это интересно пользователям — неизвестно. В конце концов, если бы уникальные функции Lotus Symphony, которыми этот офисный пакет отличался от OpenOffice.org, были такими уж полезными, то вряд ли IBM прекратила бы его разработку.
А подсовывать пользователям то, что они уже видели, только под другим названием, — не очень-то корректно. По крайней мере последние улучшения и планы LibreOffice кажутся куда более привлекательными и современными: поддержка стандарта CMIS для интеграции с CMS и онлайновыми хранилищами данных, анонсированная работа с офисным пакетом онлайн, грядущий выпуск приложений для работы с программами на планшетах с Android и iOS, адаптация программ под смартфоны с небольшими экранами. Поэтому, как ни горько это осознавать, от былой славы у OpenOffice осталось одно название.
Исходный код open office
Бабочки, конечно, ничего не знают о змеях. Зато о них знают птицы, охотящиеся на бабочек. Птицы, плохо распознающие змей, чаще становятся.
Октавой называется интервал между двумя ближайшими одноименными звуками: до и до, ре и ре и т. д. С точки зрения физики «родство» этих.
В 27 году до н. э. римский император Октавиан получил титул Август, что на латыни означает «священный» (в честь этого же деятеля, кстати.
Известная шутка гласит: «NASA потратило несколько миллионов долларов, чтобы разработать специальную ручку, способную писать в космосе.
Известно порядка 10 миллионов органических (то есть основанных на углероде) и лишь около 100 тысяч неорганических молекул. Вдобавок.
В отличие от обычного стекла, кварцевое пропускает ультрафиолет. В кварцевых лампах источником ультрафиолета служит газовый разряд в парах ртути. Он.
При большом перепаде температур внутри облака возникают мощные восходящие потоки. Благодаря им капли могут долго держаться в воздухе и.
СМИ ПОН
Новости СМИ ПОН
Подлинная история советского «ограбления века». Дело братьев Калачян
В 1977 году в Армении произошло крупнейшее в истории СССР ограбление Госбанка.
Об ограблении денежных хранилищ Госбанка не думали даже матёрые уголовники. И тем не менее в 1977 году случилось немыслимое — злоумышленники покусились на святая святых советской финансовой системы.
Операция «Архив». Как Советский Союз окончательно избавился от Гитлера
На рубеже 1980–1990-х годов, когда в Восточной Европе произошло обрушение просоветских режимов, а Западная Германия поглотила Восточную, произошло резкое усиление позиций неонацистов.
На фоне ниспровержения социализма крайне правые силы пытались добиться хотя бы частичной реабилитации нацизма.
Непобедимая страна. 15 интересных фактов о Советском Союзе
30 декабря 1922 года на Первом Всесоюзном съезде Советов было утверждено образование Союза Советских Социалистических республик. Советский Союз занимал территорию площадью 22 400 000 квадратных километров, являясь самой большой страной на планете, имел самую протяжённую границу в мире (свыше 60 000 километров) и граничил с 14 государствами.
Великая душа. Жизнь и принципы Махатмы Ганди
Мохандас Карамчанд Ганди родился 2 октября 1869 года в индийском городе Порбандар в состоятельной семье из варны вайшьев. Маленький Мохандас, или Мохан, меньше всего напоминал философа, мыслителя и политика, идеи которого перевернут мир.
Продукт гуманизма. Как сердобольный дантист придумал «электрический стул»
6 августа 1890 года человечество вписало новую страницу в свою историю. Научно-технический прогресс добрался и до такого специфического рода деятельности, как исполнение смертных приговоров. В Соединённых Штатах Америки была проведена первая смертная казнь на «электрическом стуле».
Придуманный из гуманных соображений «электрический стул» оказался одним из самых жестоких способов смертной казни.
OpenOffice
OpenOffice (так же – Apache OpenOffice, OpenOffice.org, OO.org, OO.o, OOo) – пакет офисных приложений, главный конкурент коммерческих офисных приложений, таких как, например, Microsoft Office. Конкурентная борьба идет не только на уровне формата, но и на уровне пользовательского интерфейса. Пакет OpenOffice работает на платформе Microsoft Windows, Mac OS X, Linux, а также Intel/Power PC.
Данный пакет офисных приложений основан на коде StarOffice, выпущенной фирмой Sun Microsystems с открытым исходным кодом. Позже права на OpenOffice перешли к компании Oracle. С 2011 года компания Oracle публично объявила о передаче всех прав на OpenOffice фонду Apache. В результате лицензия на код OpenOffice.org была изменена на Apache License 2.0, о чем негативно отозвался Фонд свободного ПО и предложил впредь использовать LibreOffice.
Существует версия OpenOffice.org для работы без установки, так называемая «переносимая» версия. Ее можно запускать с флеш-накопителя или любого другого носителя. Поддерживает работу в операционных системах семейства Microsoft Windows.
Именно на офисном пакете OpenOffice.org все российские школьники обучаются информатике и компьютерной грамотности – соответствующее решение было принято российским правительством в 2008 году.
Согласно GNU General Public License (универсальной общественной лицензии), пакет офисных приложений OpenOffice открыт для бесплатной установки и свободного использования в школах и ВУЗах, офисах и на домашних компьютерах как в бюджетных, так и в коммерческих организациях всех стран СНГ.
История возникновения и развития
Впервые исходный код бесплатного пакета для офисных приложений OpenOffice был опубликован 13 октября 2000 года, история же популярной программы началась еще в августе 1999 года, когда в очередном номере Wall Street Journal вышла статья о том, что компания Sun приобрела приложение Star Office и планирует открывать исходный код программ. И действительно, уже с 13 октября код был открыт для загрузки. Несмотря на то, что до выхода первой версии пакета офисных приложений OpenOffice.org оставалось еще более двух лет, именно этот день считает его днем рождения.
Пакет бесплатных офисных приложений очень быстро набрал популярность – уже в апреле 2002 года количество загрузок превысило четыре с половиной миллиона, а общее число пользователей насчитывало более 10 тысяч человек. Прошел всего месяц и количество загрузок уже превысило шесть миллионов, чему, без сомнения, способствовал выход первой версии OpenOffice.org 1.0. Этим же летом был представлен и релиз программы для Mac OS X.
С началом 2003 года была начата и разработка следующей версии 2.0. Планировалось провести следующие улучшения:
Бета-версия OpenOffice 2.0 вышла 4 марта 2005 года. Тогда же, в 2005 году, компания Sun заявила, что отказывается от SISSL. Сообщество OpenOffice.org в свою очередь публично заявило об отказе от двойного лицензирования и выпуске последующих версий под лицензией LGPL. После этого, 20 октября 2005 года, была представлена рабочая версия OpenOffice.org 2.0. Уже через два месяца вышло обновление, OpenOffice.org 2.0.1, в котором были исправлены некритичные ошибки.
После выпуска обновления OpenOffice.org 2.0.3, обновления, улучшения и исправления ошибок стали выходить поквартально.
В 2008 году была представлена третья версия, в которой была осуществлена «родная» поддержка Mac OS X, благодаря чему скорость и стабильность работы пакетных программ значительно повысилась. Третий OpenOffice уже мог работать на компьютерах с Mac, не используя систему окон Х11. Кроме того, был добавлен компонент Solver, который отсутствовал на тот момент в офисном пакете Microsoft Office для Mac OS X. После публичного релиза третьей версии, работы над второй версией продолжались: два последних обновления вышли уже после запуска третьей версии.
В том же, 2008-ом, году разработчики пакета офисных приложений OpenOffice отделились от компании Oracle и заявили о создании независимой организации The Document Foundation. В этом начинании разработчиков поддержали такие крупнейшие корпорации как Red Hat, Novell, Google, Canonical. До того момента, пока компания Oracle не продала права на название программ новой организации, открытый продукт назывался LibreOffice.
Пакет приложений
В пакет офисных приложений OpenOffice входит:
Кроме того, в состав OpenOffice входят общие для всех приложений система записи макрокоманд и средство для ускоренного запуска с помощью предварительной загрузки.
StarOffice
Когда OpenOffice.org принадлежал Sun, разработка некоммерческого пакета программ велась главным образом для того, чтобы использовать их в качестве основы для вполне коммерческого приложения StarOffice. Все приложения StarOffice от шестой версии и выше базируются на исходных кодах OpenOffice с некоторыми дополнениями.
Дополнительные компоненты StarOffice:
Дружим C# и OpenOffice.org
Не судите строго, это моя первая статья
На работе поставили задачу — написать бюджетный вариант для моей программы (ранее для отчетов использовали MS Office). Сильно озадачился, из — за нехватки материалов по данной теме, так как все материалы разбросаны по разным блогам, и они все в основном на английском. Сегодня я решил поделиться своим, пусть и небольшим опытом в данной проблеме.
Первое что нам нужно, чтобы «воссоединить» C# и OOo3 — это библиотеки “CLI_*.dll”, для работы нашей программы с OpenOffice.org. В OpenOffice.org 2 они поставляются и устанавливаются вместе офисом, в дистрибутиве 3его же, они не устанавливаются. Так что берем и вытаскиваем их (все CLI_*.dll библиотеки) ручками из архива [openofficeorg1.cab] OOo3 (при установке все архивы извлекаются в выбранное вами место), добавляем их в References своего проекта. При добавлении важно отметить для каждой библиотеки Copy Local и Specific Version значения в false!
Также на этом “мучения” с OOo3 не заканчиваются. Далее немного кода специфичного для работы с OOo3:
Список namespace’ов:
using System;
using System.Collections. Generic ;
using System.Text;
using System.Drawing;
using System.IO;
//OOo 3
using unoidl.com.sun.star.lang;
using UNO = unoidl.com.sun.star.uno;
using unoidl.com.sun.star.bridge;
using unoidl.com.sun.star.frame;
using OOo = unoidl.com.sun.star;
using Microsoft.Win32;
using System.Runtime.InteropServices;
if (Marshal.SizeOf( typeof ( IntPtr )) == 8) baseKey = @»SOFTWARE\Wow6432Node\OpenOffice.org\» ;
else
baseKey = @»SOFTWARE\OpenOffice.org\» ;
// Get the URE directory
string key = baseKey + @»Layers\URE\1″ ;
RegistryKey reg = Registry.CurrentUser.OpenSubKey(key);
if (reg == null ) reg = Registry.LocalMachine.OpenSubKey(key);
string urePath = reg.GetValue( «UREINSTALLLOCATION» ) as string ;
reg.Close();
urePath = Path.Combine(urePath, «bin» );
// Get the UNO Path
key = baseKey + @»UNO\InstallPath» ;
reg = Registry.CurrentUser.OpenSubKey(key);
if (reg == null ) reg = Registry.LocalMachine.OpenSubKey(key);
string unoPath = reg.GetValue( null ) as string ;
reg.Close();
Код выше производит так называемую “инициализацию” OOo3 (устанавливает переменные окружения для OOo3). “Инициализацию” следует проводить при каждом запуске программы, так как переменная PATH не сохраняется.
Теперь можно и работать с OOo (для версии 2 и выше[Версии ранее не пробывал просто]):
//Создаем \ загружаем документ Writer
private OOo.text.XTextDocument OOo3_initWriterDocument( string filePath, bool newDoc)
<