working with microsoft excel spreadsheets and microsoft access databases in a java application sean...
TRANSCRIPT
Working with Microsoft Excel spreadsheets and Microsoft Access databases in a Java application
Sean SullivanJuly 27, 2006
This presentation is available athttp://oscon2006.sourceforge.net/
•Introduction
•Jakarta POI project
•Jackcess project
•Demo: web application
•Demo: Swing application
Overview
•Java class library for reading and writing Microsoft Office documents
•Apache License 2.0
•http://jakarta.apache.org/poi
Jakarta POI
•Read/write OLE2 Compound Document Format
•Read/write Microsoft Office documents
• XLS
• PPT
• DOC
•Not supported
• MDB
• VSD
POI features
Who is using Jakarta POI?
•POIFS: low-level file I/O
•HSSF: Horrible Spreadsheet Format
•HWPF: Horrible Word-processing Format
•HSLF: Horrible Slide Format
•HPSF: Horrible Property Set Format
•DDF: Dreadful Drawing Format
POI terminology
Microsoft Excel file format
222 pages!
Packages
• org.apache.poi.hssf• org.apache.poi.hssf.eventusermodel• org.apache.poi.hssf.usermodel
Core classes
• HSSFWorkbook• HSSFSheet• HSSFRow• HSSFCell• HSSFCellStyle
Working with XLS files
Demo: Hello POI
@see HelloPoi.java
Yes!
HSSFCell• getCellFormula• setCellFormula("formulaString")
HSSFFormulaEvaluator • evaluate(HSSFCell)
Can I use formulas?
•Macros - must load from a template XLS file
•Charts - limited support
•Pivot tables - not supported
Other POI topics
•Java class library for reading and writing MDB files
•developed by Health Market Science Inc.
•LGPL
•requires JRE 1.5 or higher
•http://jackcess.sourceforge.net/
Jackcess project
•Read/write Microsoft Access MDB files*
•Copy ResultSet to MDB table
•Copy CSV file to MDB table
Jackcess features
* Microsoft Access 2000 only
Package:
com.healthmarketscience.jackcess
Core classes:
• Database• Table• Column• DataType
Jackcess API
Hello JackcessDatabase db = Database.open(new File("demo.mdb"));for (String tname: db.getTableNames()){ Table t = db.getTable(tname); Map<String, Object> row; while ((row = t.getNextRow()) != null) { for (String colName : row.keySet()) { System.out.println(row.get(colName)); } }}
•Eclipse 3.2
•WebTools 1.5
•Subversion 1.3.x
•Subclipse 1.1.x
•Tomcat 5.5.17
•Firefox 1.5.0.5
•Maven 2.0.4
Web application demo
•POI 3.0 alpha 2
•Jackcess 1.1.5
•OpenCSV 1.5
•Wicket 1.2
•Derby 10.1.2.1
•Log4j 1.2.13
•Sun JDK 1.5
•javax.swing.JTable
•javax.swing.table.TableModel
•Jakarta POI
Swing demo
Summary
• Use POI to read/write XLS files
http://jakarta.apache.org/poi/
• Use Jackcess to read/write MDB files
http://jackcess.sourceforge.net/
• This presentation
http://oscon2006.sourceforge.net/