Když už jsem v úvodu seriálu zmínil možnost přístupu k Excel souborům přes JDBC, měl bych teď přidat více detailů. Ale nečekejte žádné zázraky. Osobně jsem tímto způsobem s excelem nikdy nepracoval a ani samotná myšlenka se mi moc nelíbí, nicméně je to také jedna z cest. Narazil jsem pouze na dvě knihovny, které poskytovaly JDBC rozhraní pro Excel:
- xlSQL - open-source
- HXTT JDBC Drivers for MS Excel - komerční implementace
HXTT JDBC driver jsem nezkoumal a xlSQL mě zklamal - chybí dokumentace, vývoj zamrzl v roce 2004 a příklady použití aby člověk hledal "kupou v lupce sena" :-).
Pro zpracování xls dokumentů používá xlSQL knihovnu projektu JExcelApi, ke které se snad dostaneme v některém z příštích dílů. Zpracování SQL dotazů probíhá v režii knihoven z MySQL connectoru a HSQLDB.
A abych zůstal věrný tradici a netrápil vás pouze šedou teorií, tak tady je příklad kódu jak na excel přes JDBC:
Class.forName("com.nilostep.xlsql.jdbc.xlDriver"); String url = "jdbc:nilostep:excel:" + System.getProperty("user.dir"); Connection con = DriverManager.getConnection(url); Statement stm = con.createStatement(); String sql = "DROP TABLE \"demo.xlsqly7\" IF EXISTS;" + "CREATE TABLE \"demo.xlsqly7\" (v varchar);"; stm.execute(sql); // some inserts for (int i = 0; i < 7000; i++) { sql = "INSERT INTO \"demo.xlsqly7\" VALUES ('xlSQL Y7 - NiLOSTEP');"; stm.execute(sql); } //query count sql = "select count(*) from \"demo.xlsqly7\""; ResultSet rs = stm.executeQuery(sql); //print resutl while (rs.next()) { System.out.println("Sheet xlsqly7 has " + rs.getString(1) + " rows."); } // close connection con.close();
Komentáře