Das Projekt muss Excel -Dokumente analysieren, um Daten zu erhalten. Daher fand ich einige Informationen online und kombiniert mit meiner Verwendung dieses Mal und schrieb meine Erfahrung auf:
1. Für das Maven -Projekt sind die folgenden Abhängigkeiten erforderlich:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </dependency>
Gehen Sie direkt zur Testklasse mit vollständigen Anmerkungen in der Klasse:
Paket shindo.java; import Java.io.fileinputStream; Import Java.io.inputStream; Import Java.util.ArrayList; Import Java.util.list; org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.s.usermodel.cell; import org.apache.poi.xssf.usermodel.xssfcell; import org. org.apache.poi.xssf.usermodel.xssfsheet; import org.apache.poi.xssf.usmodel.xssfworkbook; public class excelutil {public static void main (String [] args) {String path = "d: //ide try {list <list <string >> result = new excelutil (). readXls (path); System.out.println (result.size ()); für (int i = 0; i <result.size (); i ++) {list <string> model = result.get (i); System.out.println ("ordernum:" + model.get (0) + "-> orderAmount:" + model.get (1)); }} catch (Ausnahme e) {e.printstacktrace (); }} /** * * @title: readxls * @Description: Verarbeitung von XLS-Dateien * @param @param path * @param @return * @param @throw Exception Set-Datei * @return liste <liste <liste <String >> return type * @throws * * Es ist nicht schwierig, seine Verarbeitungslogik zu erfassen. Datei HSSFWorkbook -Objekt Typ, das die gesamte Excel -Datei darstellt. * 3. Schleife für jede Seite dieser Excel -Datei* 4. Schleife für jede Zeile in jeder Seite* 5. Verarbeiten Sie jede Zelle in jeder Zeile, um den Wert dieser Zelle zu erhalten = neuer FileInputStream (Pfad); // HSSFWorkbook identifiziert das gesamte Excel HSSFWorkbook HSSFWorkbook = New HSSFWorkbook (IS); Liste <list <string >> result = new ArrayList <list <string >> (); int size = hssfworkbook.getNumberofsheets (); // Jede Seite Schleifen und die aktuelle Schleifenseite für (int numsheet = 0; numSheet <size; numSheet ++) {// HSSFSheet Identifiziert eine bestimmte Seite HSSFSheet HSSFSheet = hssfworkbook.getsheetat (numsheet); if (hssfsheet == null) {Fortsetzung; } // Verarbeiten Sie die aktuelle Seite und lesen Sie jede Zeile für (int rownum = 1; rownum <= hssfsheet.getLastrownum (); Rownum ++) {// hssfrow repräsentiert die Zeile Hssfrow Hssfrow = hssfsheet.getRow (Rownum); int mincolix = hssfrow.getFirstcellnum (); int maxcolix = hssfrow.getLastcellnum (); Liste <String> rowList = new ArrayList <string> (); // Durchlauf und Änderungen, um jedes Zellelement für (int colix = mincolix; colix <maxcolix; colix ++) {// hssfcell zu verarbeiten, repräsentiert Cell HSSFCell Cell = Hssfrow.getCell (Colix); if (cell == null) {Fortsetzung; } rowList.add (getstringval (cell)); } result.add (rowList); }} Rückgabeergebnis; } / ** * * @title: readxlsx * @Description: Verarbeitung von XLSX -Dateien * @param @param path * @param @return * @param @throws Ausnahmedatei * @return liste <list <liste <String >> return type * @throws * / private list <String >> readXlsx (String path). XSSFWORKBOOK XSSFWORKBOOK = new XSSFWorkbook (IS); Liste <list <string >> result = new ArrayList <list <string >> (); // Jede Seite schleifen und die aktuelle Schleifenseite für (xssfsheet xssfsheet: xssfworkbook) {if (xssfsheet == null) {Fortsetzung; } // Die aktuelle Seite verarbeiten und jede Zeile für (int rownum = 1; Rownum <= xssfsheet.getLastrownum (); Rownum ++) {xsssfrow xssfrow = xssfsheet.getRow (Rownum) lesen; int mincolix = xsssfrow.getFirstcellnum (); int maxcolix = xsssfrow.getLastcellnum (); Liste <String> rowList = new ArrayList <string> (); für (int colix = mincolix; colix <maxcolix; colix ++) {xssfcell cell = xssfrow.getCell (colix); if (cell == null) {Fortsetzung; } rowList.add (cell.toString ()); } result.add (rowList); }} Rückgabeergebnis; } // Bestehende Probleme/** In der Tat sind die Daten, die wir erhalten, die Daten in Excel, aber am Ende ist festgestellt, dass das Ergebnis nicht ideal ist* Wenn die Daten in Ihrer Excel eine Nummer sind, werden Sie feststellen, dass der entsprechende in Java zu einer wissenschaftlichen Notationsmethode geworden ist. * Wenn Sie also Werte erhalten, müssen Sie eine spezielle Verarbeitung durchführen, um sicherzustellen, dass Sie die gewünschten Ergebnisse erhalten. Der Online -Ansatz besteht darin, numerische Daten zu formatieren, um die gewünschten Ergebnisse zu erhalten. * Das Folgende ist eine andere Methode. Schauen wir uns vorher die Methode toString () in POI an: * * Diese Methode ist die POI -Methode. Aus dem Quellcode können wir feststellen, dass der Verarbeitungsfluss lautet: * 1. Nehmen Sie den Zelltyp * 2. Formatieren Sie die Daten entsprechend dem Typ und Ausgabe. Dies schafft eine Menge Dinge, nach denen wir nicht suchen*, daher machen wir eine Transformation dieser Methode. * / /*public String toString () {switch (getCellType ()) {case cell_type_blank: return ""; case cell_type_boolean: return getBooleancellValue ()? "Wahr": "Falsch"; case cell_type_error: return erroreval.getText (getErrorcellValue ()); case cell_type_formula: return getCellFormula (); case cell_type_numeric: if (dateUtil.iscellDateFormatted (this)) {DateFormat sdf = new SimpledateFormat ("dd-mmm-yyy") return sdf.format (getDateCellValue ()); } return getNumericcellValue () + ""; case cell_type_string: return getRichstringcellValue (). toString (); Standard: Rückgabe "Unbekannter Zelltyp:" + getCellType (); }}* / / *** Die Methode zum Wiederaufbau des Standard -ToString () von POI lautet wie folgt* @title: getStringval* @Description: 1. Für unbekannte Typen oder leere return "" Kontrollstring* 2. Wenn es sich String -Rückgabe -Typ * @throws */ public static String getStringVal (HSSFCell Cell) {Switch (cell.getCellType ()) {case cell.cell_type_boolean: return cell.getBooleAncellValue ()? "Wahr": "Falsch"; case cell.cell_type_formula: return cell.getCellFormula (); case cell.cell_type_numeric: cell.setCellType (cell.cell_type_string); return cell.getStringCellValue (); case cell.cell_type_string: return cell.getStringCellValue (); Standard: Rückgabe ""; }}}Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Verwendung von POI -Paket zum Lesen von Excel -Dokumentencode in Java. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!