Cum se citeşte un fişier Excel din Java
Recent am avut această problemă: cum aş pute să citesc date dintr-un fişier excel, într-un program Java. Există, desigur, varianta simplă prin care configurezi fişierul în ODBC şi îl accesezi ca pe o bază de date cu JDBC.
Probleme sunt însă mai multe cu această abordare:
- e complicat - nu foarte, dar existenţa unui pas de instalare nu e placută
- nu e portabilă - există unixodbc, dar...
- nu îmi imaginez cum ar funcţiona pe o listă de 100 000 de fişiere (ok, îmi pot imagina, dar e urât!)
Trebuie să recunosc că utilizarea JXL (acronimul pentru JExcelApi) a fost mai uşoară decât mă aşteptam. Pentru a testa funcţionarea, am vrut să afişez pe consolă conţinutul primei foi dintr-un fişier de test.
Am început prin a crea un proiect nou în Eclipse, de tip Java. În interiorul acestui proiect am făcut un director lib, în care am copiat fişierul jxl.jar ce se găseşte în arhiva de la JExcelApi. După ce am adăugat acest jar la build path, am creat un fişier Main.java.
Pentru a deschide fişierul Excel al cărui nume l-am primit ca parametru, folosesc clasa Workbook:
Workbook workbook = Workbook.getWorkbook(new File(args[0]));Foile în fişier sunt numerotate de la 0, deci în continuare obţinem prima foaie:
Sheet sheet = workbook.getSheet(0);Clasa Sheet are două metode, getRows() şi getColumns(), care returnează dimensiunea pe orizontală şi verticală a foii. Aici trebui avut grijă, căci Excel indexează întâi pe coloană, apoi pe linie (de ex. A1, unde A e coloana şi 1 e linia). Ştiind acestea, parcurg în întregime foaia şi afişez la consolă conţinutul celulelor, luat ca şir de caractere:
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < sheet.getColumns(); j++)
System.out.printf("%30s",
sheet.getCell(j, i).getContents());
System.out.println();
}
În final, se închide fişierul. Nu este obligatoriu în cazul nostru, dar în general se eliberează memoria mai eficient dacă se închide manual.
workbook.close();
Niciun comentariu:
Trimiteți un comentariu