Generieren Sie einfache Excel -Dateien
In realen Büros haben wir häufig eine Anforderung: Wir müssen direkt in Excel geöffnet werden. Während Praktika besteht ein solcher Bedarf. Fragen Sie alle Informationen über den vom Benutzer bereitgestellten Anhang basierend auf der ausgewählten Ressource ab und generieren Sie Excel zum Download. Bei der Abfrage müssen wir jedoch überprüfen, ob die Informationen in der vom Benutzer bereitgestellten Anhang (ID -Karte) Fehler auftreten. Es gibt einen Fehler, der die Fehlermeldung Excel erzeugt.
Das POI -Projekt von Apache ist derzeit eine relativ reife HSSF -Schnittstelle, mit der Excel -Objekte verarbeitet werden. Tatsächlich behandelt POI nicht nur Excel, es kann auch mit Wort, PowerPoint, Visio und sogar Aussichten umgehen.
Hier werde ich zuerst vorstellen, wie man Excel mit Poi generiert.
Bevor wir Excel generieren, müssen wir zunächst die Organisation von Excel -Dateien verstehen. In POI wird wie folgt verstanden: Eine Excel -Datei entspricht einer Arbeitsmappe, und ein Workerbook besteht aus mehreren Blättern. Ein Blatt hat mehrere Zeilen und eine Reihe hat im Allgemeinen mehrere Zellen.
Für die oben genannten vier Substantive können wir in der folgenden Abbildung verstehen
Zur Erzeugung von Excel liefert POI die folgenden grundlegenden Objekte:
Aus der obigen Bild- und Excel -Organisationsstruktur können wir die Schritte zum Erstellen von Excel verstehen.
1. Generieren Sie das Dokumentobjekt HSSHWORKBOOK.
2. Generieren Sie Form HSSFSheet über HSSFWorkbook.
3. Generieren Sie Zeilen durch HSSFSheet
4. Erzeugen Sie Zell -HSSFcell durch HSSfrow.
Hier ist der Anzeigecode:
Identitätskartenfehlerbean (FehlerCondition.java)
public class errorCondition {private Zeichenfolge Name; // private String -IDCard nennen; // ID -Karte privater Zeichenfolge Status; // Fehlerstatus private Zeichenfolge Meldung; // Fehlermeldung FehlerCondition (String -Name, String -IDCard, String -Status, String -Nachricht) {this.name = name; this.idcard = idCard; this.status = Status; this.message = message; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String getIdCard () {return idCard; } public void setIdCard (String idCard) {this.idcard = idCard; } public String getStatus () {Rückgabestatus; } public void setStatus (String -Status) {this.status = Status; } public String getMessage () {Rückgabenachricht; } public void setMessage (String -Nachricht) {this.message = message; }}Verarbeitungsklasse (exporterrorexcel.java)
public class exporterrorexcel {public static void main (String [] args) {// Schritt 1 Erstellen Sie das Arbeitsbuch HSSFWorkbook wb = new HSSFWorkbook (); // Schritt 2 Erstellen von Blatt HSSFSheet Sheet = WB.CreateSheet ("ID -Kartenfehlermeldung"); // Schritt 3 Zeilen Zeile erstellen: 0 Zeilen der Tabellenheader Hssfrow Row = Sheet.Createrow (0); HssfcellStyle style = wb.createcellstyle (); style.setAnignment (hssfcellStyle.Align_Center); // Mitte // Schritt 4: Erstellen Sie die Zelle HSSFCell Cell = row.CreateCell (0); // die erste Zellzelle.setCellValue ("Name"); // value cell.setCellStyle (Stil) festlegen; // center content cell = row.createcell (1); // die zweite Zellzelle.setCellValue ("ID -Karte"); cell.setCellStyle (Stil); cell = row.createcell (2); // die dritte Zellzelle.setCellValue ("Fehlerstatus"); cell.setCellStyle (Stil); cell = row.createcell (3); // die vierte Zellzelle.setCellValue ("Fehlermeldung"); cell.setCellStyle (Stil); // Der fünfte Schritt fügt die Datenliste ein <fehlerCondition> list = exporterRorexcel.getErrorCondition (); für (int i = 0; i <list.size (); i ++) {errorCondition errorCondition = list.get (i); // create row = sheet.createur (i+1); // Zelle erstellen und data row.createcell (0) .SetCellValue (FehlerCondition.getName ()); row.CreateCell (1) .SetCellValue (FehlerCondition.getIdcard ()); row.CreateCell (2) .SetCellValue (FehlerCondition.getStatus ()); Row.CreateCell (3) .SetCellValue (FehlerCondition.getMessage ()); } // Schritt 6 Speichern Sie die generierte Excel -Datei in dem angegebenen Pfad Try {FileOutputStream fout = new FileOutputStream ("d: //errorcondition.xls"); wb.write (fout); fout.close (); } catch (ioException e) {e.printstacktrace (); } System.out.println ("Excel -Datei -Generierung erfolgreich ..."); } public staticlist <fehlerCondition> getErrorCondition () {list <Regelcondition> list = new ArrayList <RegelCondition> (); ERRORCONDITION R1 = NEUE ERRORCONDITION ("Zhang San", "4306821989021611", "L", "Länge Fehler"); ERRORCONDITION R2 = NEUE ERRORCONDITION ("Li Si", "430682198902191112", "x", "Check -Fehler"); ERRORCONDITION R3 = NEUE ERRORCODITION ("Wang Wu", "", "N", "Identity -Karteninformationen ist leer"); list.add (r1); list.add (r2); list.add (r3); Rückgabeliste; }} In den oben genannten sechs Schritten können Sie Excel -Dateien am angegebenen Ort erstellen.
Java Poi Implementierung fügt Bilder in Excel ein
Die Webentwicklung ist unvermeidlich, um mit Excel umzugehen. Heute hat mir der Chef eine Aufgabe gegeben - Exporte Excel. Was ich zunächst ziemlich einfach hielt, es war nur, Excel zu bauen und die Antwort herunterzuladen. Aber es gibt einen Unterschied, das heißt, Sie müssen Bilder hinzufügen, es wird seit langem hinzugefügt. Gleichzeitig wurden im Internet keine guten Informationen gefunden, daher schrieb ich diesen Blog -Beitrag, um ihn für meine eigenen und meine Blog -Freunde zu erfassen, um zu fragen und zu referenzieren.
Es gibt ein HSSFPatriarch -Objekt in POI, das der Top -Manager für das Zeichnen ist. Die Methode für die KreaturePicture (Anker, PictureIndex) kann ein Bild in Excel einfügen. Sie müssen also ein Bild in Excel einfügen und können es in drei Schritten tun. 1. Holen Sie sich das HSSFPatriarch -Objekt, 2. New HSSFClientanchor -Objekt, 3. Nennen Sie einfach die Methode für die Kreatur. Die Implementierung ist sehr einfach zu implementieren, aber es ist immer noch ein bisschen schwierig, es gut zu machen. Hier fügen wir zuerst ein Bild ein:
public class excelimagetest {public static void main (String [] args) {FileOutputStream Fileout = null; Bufferedimage bufferimg = null; // Geben Sie zuerst das Lesen in das Bild in einen BytearrayoutputStream ein, um Bytearray -Versuche zu generieren. bufferimg = imageio.read (neue Datei ("f: /picture/anounty/xiaozhao11.jpg")); Imageio.Write (Bufferimg, "JPG", Bytearrayout); HSSFWORKBOOK WB = New HSSFWorkbook (); HSSFSheet Sheet1 = WB.CreateSheet ("Testbild"); // Der Top -Manager für das Zeichnen kann nur ein Blatt erhalten (achten Sie darauf, dass Sie auf diesen Punkt achten). // Anchor wird hauptsächlich verwendet, um die Attribute von Bildern HSSFClientanchor Anchor = New HSSFClientanchor (0, 0, 255, 255, (kurz) 1, 1, (kurz) 5, 8) festzulegen; Anchor.Setanchortype (3); // Picture Patriarch.CreatePicture (Anchor, WB.AddPicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg)) einfügen; FileOut = new FileOutputStream ("d:/test excel.xls"); // Schreiben Sie in die Excel -Datei wb.write (Dateiout); System.out.println ("--------"); } catch (Ausnahme e) {e.printstacktrace (); } endlich {if (filout! = null) {try {FileOut.close (); } catch (ioException e) {e.printstacktrace (); }}}}}}}}}}} Im Folgenden sind die Ergebnisse nach der Ausführung aufgeführt:
Warum ist dieses Ergebnis hauptsächlich auf HSSFClientanchor (0, 0, 255, 255, (Short) 1, 1, (Short) 5, 8) zurückzuführen. Lassen Sie mich diesen Konstruktor unten erklären: HSSFClientanchor (int dx1, int dy1, int dx2, int dy2, Short Col1, int Row1, Short Col2, int Row2); Die Bedeutungen jedes Parameters sind wie folgt:
Hier definieren DX1 und DY1 die Ausgangsposition des Bildes an der Anfangszelle, und DX2 und DY2 definieren die Endposition der Endzelle. Col1 und Row1 definieren die Startzelle, Col2 und Row2 die Endzelle.
Das Folgende wird mit zwei verschiedenen Konstruktoren erstellt. Aus diesem Bild können wir die Bedeutung und Unterschiede der oben genannten acht Parameter deutlich erkennen.
Das obige soll ein Bild einfügen. Was ist also mit dem Einfügen mehrerer Bilder? Tatsächlich ist es sehr einfach. Erstellen Sie mehrere verschiedene HSSFClientanchor -Objekte und steuern Sie diese acht Parameter wie folgt:
HSSFClientanchor Anchor1 = New HSSfClientanchor (0, 0, 1023,100, (kurz) 1, 1, (kurz) 5, 8); HSSFClientanchor Anchor2 = New HSSfClientanchor (0, 0, 1023,100, (kurz) 1, 9, (kurz) 5, 16); // Picture Patriarch.CreatePicture (Anchor1, Wb.Addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg)) einfügen; patriarch.CreatePicture (Anchor2, WB.AddPicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg));
Der Rest des Codes ist der gleiche und die folgenden Ergebnisse werden erzielt: