Можно ли использовать OLE-автоматизацию в Java? Если нет, то почему это невозможно в Java?
Я хочу автоматизировать экспорт электронных таблиц Excel в другом формате (например, .csv и т. д.)
Спасибо за ответы заранее :)
Можно ли использовать OLE-автоматизацию в Java? Если нет, то почему это невозможно в Java?
Я хочу автоматизировать экспорт электронных таблиц Excel в другом формате (например, .csv и т. д.)
Спасибо за ответы заранее :)
Вы можете использовать JACOB. Но будет некоторая боль, так как это не очень хорошо задокументировано, а производительность не самая лучшая. Также может быть сложно заставить его работать правильно для вашей среды в зависимости от того, на какую версию Windows вы ориентируетесь. Я бы определенно не стал использовать его, если вы создаете масштабируемое веб-приложение. Другим вариантом может быть Apache POI, который действительно прошел долгий путь от своих ранних корней и используется во многих готовые к производству инструменты, такие как JBoss Drools. Если вы решите пойти с JACOB, я рекомендую вам прочитать эту ветку SO:
Есть ли хороший справочник по использованию OLE-автоматизации ( с Java)?
Недавно (март 2013 г.) независимый участник добавил поддержку общей автоматизации COM в JNA, что является последним человеком, стоящим с точки зрения интеграции API собственной платформы с Java. JNA по-прежнему очень активно поддерживается, в отличие от Jawin/JACOB/etc.
См. здесь пример того, как это используется. Предварительно подготовленные привязки к API-интерфейсам Office пока очень просты, но глядя на код, кажется очень простым использовать API COM-автоматизации (IDispatch, Variant и т. д.) для поздней привязки практически к любому COM-интерфейс.
Однако я хотел бы видеть более полную привязку API-интерфейсов Office COM, поскольку они являются наиболее часто используемыми API-интерфейсами COM в мире. Возможно, также могут быть «MSExcel2007.java», «MSExcel2010.java» и т. д., чтобы охватить различные версии API. Так что работа над ним еще не завершена, но теперь JNA так же полезна для COM-автоматизации, как и JACOB/Jawin, с бонусом в том, что она чрезвычайно активно поддерживается (по состоянию на апрель 2013 г.).
Существует библиотека под названием JACOB, которая позволяет именно то, что вы ищете. Что вы подразумеваете под «из Java API?» Вы имеете в виду из официальных пакетов J2SE? Я не знаю, как на это ответить, кроме как сказать, что J2SE не включает библиотеки для всех мыслимых нужд, особенно те, которые работают только в одной операционной системе. Вот почему существуют сторонние пакеты.
Коммерческие, но, похоже, у них есть бесплатная лицензия с открытым исходным кодом и академическая лицензия...
Документы для разработчиков по JExcel
У меня нет принадлежности.