SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Manipulação de Arquivos com

      Apache POI
Apresentação
Cristiano Agosti - @agosti
Professor da Universidade do Oeste de Santa Catarina
Desenvolvedor JEE
Incentivador do uso de Software Livre
Participante do OeSC-livre.org


Luzitan Orso Zancan - @luzitan

Programador linguagens C e JEE
Incentivador do uso de Software Livre
Agenda
•   Motivação
•   Fundação Apache
•   Apache POI
•   Streams
•   Configurações
•   API Componentes
•   Exemplos
•   Integração com PHP e Ruby
•   Como Participar
•   Quem utiliza
Motivação




      Detecção de Plágio em Arquivos
       http://www.copiaecola.com.br
Fundação Apache

• O que é?

• Licença Apache

• Principais Projetos
Apache POI

• Poor Obfuscation Implementation - POI

• Open Office XML - OOXML

• Compound Document Format - OLE2
API de Componentes
API de Componentes
• Excel (HSSF+XSSF)

• Word (HWPF+XWPF)

• PowerPoint (HSLF+XSLF)

• Outlook (HSMF)

• Visio (HDGF)

• TNEF (HMEF)

• Publisher (HPBF)
Configurações
Configurações
Dependências
OpenXML4J (OOXML)
I/O Streams
OutputStream
InputStream
Excel (HSSF + XSSF)

• API Java para criação, modificação, leitura e escrita no
  Microsoft Excel

• HSSF - Excel 97 (-2007)

• XSSF - Excel 2007 (.xlsx)

• http://poi.apache.org/spreadsheet/quick-guide.html

• http://poi.apache.org/spreadsheet/examples.html
Excel (HSSF + XSSF)

• Criar workbook, planilha, células,   • Definir em uma planilha: área de
• Trabalhar com diferentes tipos de      impressão, número de páginas no
  células de dados                       rodapé, selecionar, definir zoom,
• Interagir sobre linhas e céluas        ajustar linhas
• Pegar o conteúdo de uma célula       • Criar painéis congelados
• Extrair texto                        • Desenhar shapes e graficos 2d
• Alinhar células                      • Formatação Condicional
• Trabalhar com bordas                 • Autofiltros
• Cores e fundos                       • Objetos Embutidos
• Merge de células                     • Validação de dados
• Fontes                               • Hiperlinks
• Criar novas linhas em células        • Ajustar colunas conforme o
• Criar dados no formatado definido      conteúdo
  pelo usuário                         • Setar comentários nas células
• Ajustar planilha em uma página       • Nomear intervalos e células
• Imagens                              • Cabeçalhos e rodapés
Excel (XSSF)
Excel (XSSF)
Excel (XSSF)
Excel (XSSF)
Excel (XSSF)
Word (HWPF + XWPF)

• API Java para criação, modificação, leitura e escrita no
  Microsoft Word

• HWPF - Word 97 (-2007)

• XWPF - Word 2007 (.xlsx)
Word (XWPF)
Word (XWPF)
Word (XWPF)
Word (XWPF)
PowerPoint (HSLF+XSLF)

• API Java para criação, modificação, leitura e escrita no
  Microsoft PowerPoint
• HSLF - Word 97 (-2007)

• XSLF - não finalizado

• http://poi.apache.org/slideshow/how-to-shapes.html
PowerPoint (XSLF)
PowerPoint (HSLF)
PowerPoint (HSLF)
PowerPoint (HSLF)
PowerPoint (HSLF)
Outlook (HSMF)

• Implementa manipulação das mensagens no formato do
  Outlook

•   MAPIMessage
•   getDisplayFrom()
•   getDisplayTo()
•   getDisplayCC()
•   getDisplayBCC()
•   getSubject()
•   getTextBody()
•   getAttachmentFiles() - AttachmentChunks (attachFileName,
    attachData)
HMEF (TNEF)

• Java API para acessar o Microsoft Transport Neutral
  Encoding Files (TNEF)

• Manipulação dos arquivos do Outlook e Exchange

• Permite fácil extração dos dados do corpo da mensagem e
  anexos

• Trabalhar com atributos da mensagem e do corpo
Elaboração


    Visio (HDGF)


    Publisher (HPBF)
Apache POI e outras Linguagens
Apache POI e PHP
Apache POI e PHP
Apache POI e Ruby
• Compilar POI com http://gcc.gnu.org/java

• Gerar Ruby wrapper com http://www.swig.org

• http://poi.apache.org/poi-ruby.html
Apache POI e Ruby




              Fonte: http://poi.apache.org/poi-ruby.html
Apache POI e Ruby




              Fonte: http://poi.apache.org/poi-ruby.html
Quem utiliza o Apache POI



Arian Lashkov
(alaskov at lbank.lt)



                        http://nutch.apache.org




                             http://jasperforge.org
   http://drupal.org
                                      Fonte: http://poi.apache.org
Apache POI e Microsoft




São US$100 mil por ano
Fonte: http://meiobit.com/16589/a-necessidade-cria-estranhos-companheiros-de-
cama
Patrocínio Platina




     Fonte: http://www.apache.org/foundation/thanks.html
Patrocínio Ouro




     Fonte: http://www.apache.org/foundation/thanks.html
Demais Patrocinadores




     Fonte: http://www.apache.org/foundation/thanks.html
Equipe Atual - 17 pessoas




                     Fonte: http://poi.apache.org/who.html
Como participar
• http://svn.apache.org/repos/asf
Apache POI e Maven
• http://mvnrepository.com/artifact/org.apache.poi/poi/3.5-
  beta3
Perguntas

Cristiano Agosti
cristiano.agosti@gmail.com
http://agosti.blog.br
@agosti

Luzitan Zancan
zancan2@gmail.com
@luzitan
Agradecimento




     Universidade do Oeste de Santa Catarina
                Campus de Xanxerê
             http://www.unoesc.edu.br

Más contenido relacionado

Similar a Apache poi

Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
Conexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao AjaxConexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao AjaxHelder da Rocha
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPCarlos Santos
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Aula9-Spark-Básico sematix com dataframes
Aula9-Spark-Básico sematix com dataframesAula9-Spark-Básico sematix com dataframes
Aula9-Spark-Básico sematix com dataframesronaldorclamaster21
 
Visualização de dados
Visualização de dadosVisualização de dados
Visualização de dadoslrmodesto
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
Arquitetura SQL Server
Arquitetura SQL ServerArquitetura SQL Server
Arquitetura SQL ServerRaul Oliveira
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupAndré Cruz
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceLuis Borges Gouveia
 

Similar a Apache poi (20)

Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Conexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao AjaxConexão Java 2006: Introdução ao Ajax
Conexão Java 2006: Introdução ao Ajax
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Web 3.0
Web 3.0Web 3.0
Web 3.0
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Aula9-Spark-Básico sematix com dataframes
Aula9-Spark-Básico sematix com dataframesAula9-Spark-Básico sematix com dataframes
Aula9-Spark-Básico sematix com dataframes
 
Seminário: PHP
Seminário: PHPSeminário: PHP
Seminário: PHP
 
Visualização de dados
Visualização de dadosVisualização de dados
Visualização de dados
 
Slides .pptx.pdf
Slides .pptx.pdfSlides .pptx.pdf
Slides .pptx.pdf
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Arquitetura SQL Server
Arquitetura SQL ServerArquitetura SQL Server
Arquitetura SQL Server
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon Meetup
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open source
 

Más de Cristiano Agosti

Más de Cristiano Agosti (6)

Apresentação Tdc2015 - Trilha Java
Apresentação Tdc2015 - Trilha JavaApresentação Tdc2015 - Trilha Java
Apresentação Tdc2015 - Trilha Java
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
 
Reaproveitamento de código com Generics
Reaproveitamento de código com GenericsReaproveitamento de código com Generics
Reaproveitamento de código com Generics
 
03 jax-ws
03 jax-ws03 jax-ws
03 jax-ws
 
Portal de Colaboração Social
Portal de Colaboração SocialPortal de Colaboração Social
Portal de Colaboração Social
 
Jogo para dispositivos móveis
Jogo para dispositivos móveisJogo para dispositivos móveis
Jogo para dispositivos móveis
 

Apache poi