Vorteil:
JXL unterstützt Chinese sehr gut und die Operation ist einfach, und die Methode hängt vom Namen und der Bedeutung ab.
JXL ist eine reine Java -API, die perfekt auf Plattformen auftritt. Der Code kann unter Windows oder Linux ohne Umschreiben ausgeführt werden
Unterstützt alle Versionen von Excel 95-2000 (es heißt online, dass es derzeit Excel 2007 unterstützen kann, es aber noch nicht ausprobiert hat).
Generieren Sie Excel 2000 Standardformat
Unterstützen Sie Schriftart, Nummer, Datumsoperationen
In der Lage, Zelleigenschaften zu modifizieren
Bilder und Diagramme werden unterstützt, diese API unterstützt jedoch nur eine begrenzte Unterstützung für Grafiken und Diagramme und erkennt nur das PNG -Format.
Mangel:
Ineffizient, unvollkommene Bildunterstützung und weniger starke Unterstützung für Formate als POI
Fall:
String Times = (new SimpledateFormat ("yyyymmddhmmss")). Format (neues Datum ()); String fname = "System -log" + Times; // Dateinameliste <Protokolle> list = logsService.SelectForList (hql.toString ()); String path = request.getSession (). GetServletContext (). GetRealPath ("/") + "xls/" + (new SimpledateFormat ("yyyymmdd")). Format (neues Date ()); Datei Datei = neue Datei (Pfad); // create if (! File.exists () &&! File.isdirectory ()) {file.mkdir (); } response.setContentType ("application/vnd.ms-excel; charSet = utf-8"); // // Geben Sie den Speichern der Datei an. response.setcharactercoding ("utf-8"); ExportUtil.Writer_log (Anfrage, Fname, Liste, Antwort); // Download auf lokalDie Exportmethode der Writer_log ist wie folgt
/** * Generate excel file and export to local computer* @param fname file name* @param list The data to be printed, that is, the data list of database queries*/ public static void writer_log(HttpServletRequest request,String fname, List list, HttpServletResponse response) { try { OutputStream os = response.getOutputStream();//Get the output stream response.reset (); // Löschen des Ausgabestreams // Folgendes ist der Beginn der Verarbeitung des chinesischen Dateinamens Antwort. sonst fname = new String (fname.getBytes ("utf-8"), "ISO-8859-1"); response.setheader ("Inhaltsdisposition", "Anhang; Dateiname ="+fname+". xls"); response.setContentType ("application/mSexcel; charSet = utf-8"); // Definieren Sie den Ausgabetyp // Die Verarbeitung des chinesischen Dateinamens endet // das Arbeitsbuch hier importiert jxl.workbook; Writable Workbook Wbook = Workbook.CreateWorkbook (Betriebssystem); // Excel -Datei Writableetheet Sheet = wbook.createSheet ("Systemprotokoll", 0); // Arbeitsblattname CellView CellView = new CellView (); cellView.setAutosize (true); // Setzen Sie das automatische Größenblatt.setColumnView (0, 8); // Setzen Sie die Zellbreite, 0 ist die Spaltennummer, 8 ist das Breitenblatt.setColumnView (1, 20); // Setzen Sie die Zellbreite, 1 ist die Spaltennummer, 20 ist das Breitenblatt.SetColumnView (2, 24); Sheet.SetColumnView (3, 20); SET.SetColumnView (4, 30); SET.SetColumnView (5, 13); SET.SetColumnView (6, 15); SET.SetColumnView (7, 32); SET.SetColumnView (8, 15); // Excel Font STRACTABLEFONT WFONT = NEW SCHRABABLEFONT (WrichableFont.CreateFont ("宋体"), 22, beschreibbarfont.bold, false, jxl.format.underLinestyle.no_underline, jxl.format.colour.black); // Cell Font Style WritableCellFormat titformat = new WritableCellFormat (WFONT); // Cell Font titformat.setalignment addieren (Ausrichtung.Centre); // Textzentrierausrichtung festlegen; String [] title = {"System log"}; // Setzen Sie den Excel -Tabellen -Header Start für (int i = 0; i <title.length; i ++) {// Was hier importiert wird, ist import Jxl.write.label; Label Exceltitle = New Label (i, 0, Titel [i], titleFormat); // Zellinhalt // Parameterreihenfolge: Säule starten, Startreihe, Endspalte, Endzeilenblatt.MergeCells (0, 0, 8, 0); // Ort, welche Zeile welches Spaltenblatt.Addcell (Exceltitle); // Zellinformationen hinzufügen} // Setzen Sie das Excel -Tabellen -Header -Ende // Die erste Zeile, dh die Anzeigezeit, Parameter: (Spalte, Zeile, Inhalt) Schreibbaresfont wfonttime = new WritableFont (beschreibbar jxl.format.colour.black); // Cell Font Style WritableCellFormat TitLetime = new WriteAnlEcellFormat (WFontTime); // Cell Font titletime.setalignment (Ausrichtung.Right) hinzufügen; // Textzentrierausrichtung festlegen; DateFormat df = new SimpledateFormat ("yyyy-mm-dd"); // Sheet.SetColumnView (1, cellView); // Die Spaltenbreite automatisch gemäß der Inhaltsbezeichnung contentDate = new Label (0, 1, df.format (New Date ()), Titletime) festlegen; // Zellgehalt // Sheet.MergeCells (16, 1, 18, 1); // Die Position, welche Zeile und Spalte in der Reihe sind, dh die zusammengeführte Position. Wenn es keine Verschmelzung gibt, können Sie kein Blatt schreiben. // Zellinformationen hinzufügen // Das Ende der ersten Zeile // Die zweite Zeile zeigt die Bedingungs -Title -Bar -Schreibzahlfont wfont2 = new WritableFont (Writablefont.CreateDont ("宋体"), 11, schriftlichfont.bold, false, jxl.format.understil.no_underline, jxl.format.colour.black); // Cell Font Style WritableCellFormat titformat2 = new WritableCellFormat (WFONT2); // Cell Font Titelformat2.setBorder (Border.All, BorderLinestyle.Thin) hinzufügen; // Rand-Solid-Linie festlegen; Titelformat2.Setalignment (Ausrichtung.Centre); // die zentrierte Ausrichtung des Textes festlegen; Titelformat2.SetverticalInignment (VerticalInignment.centre); // vertikale Zentrierung festlegen; Label Content2A = New Label (0, 2, "Seriennummer", Titelformat2); // Zellinhalt-1st Grid Label Content2b = Neue Etikett (1, 2, "Benutzername", titleFormat2); // Zellinhalt-2nd Grid-Etikett content2c = neues Etikett (2, 2, "Datensatzzeit", titleFormat2); // Zellinhalt-3rd Grid Label Content2C = New Label (2, 2, "Datensatzzeit", titleFormat2); // Zellinhalt-3rd Grid Label Content2C = New Label (2, 2, "Datensatzzeit", titleFormat2); // Zellinhalt-3rd Grid-Etikett content2d = neue Etikett (3, 2, "Betriebsmodul", titleFormat2); // Zellinhalt-4. Grid-Etikett content2e = Neue Etikett (4, 2, "Betriebsinhalt", titleFormat2); // Zellinhalt-5. Grid-Etikett content2f = neuer Etikett (5, 2, "Operation Action", Titelformat2); // Zellinhalt-6. Grid-Etikett content2g = neuer Etikett (6, 2, "Operator IP", Titelformat2); // Zellinhalt-7. Grid-Etikett Content2H = Neue Etikett (7, 2, "Operation Organization", Titelformat2); // Zellinhalt-8. Grid-Etikett content2i = neues Etikett (8, 2, "Hinweis", Titelformat2); // Zellgehalt-9. Gitterblatt.MergeCells (0, 1, 8, 1); /*Sheet.MergeCells(0, 2, 0, 4); // Die Position, welche Zeile und Spalte in der Zeile sind, dh die Position des Zusammenführens, wenn es keine Zusammenführung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, die Spalte 1) Blatt.MergeCells (1, 2, 1, 4); // Die Position, welche Zeile und Spalte in der Zeile sind, dh die Position des Zusammenführens, wenn es keine Zusammenführung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, das Blatt der Spalte 2) MergeCells (2, 2, 2, 4); // Die Position, welche Zeile und Spalte in der Zeile befinden, dh die zusammengeführte Position, wenn es keine Verschmelzung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 3) Blatt.MergeCells (3, 2, 3, 4); // Die Position, welche Zeile und Spalte in der Zeile befinden, dh die zusammengeführte Position, wenn es keine Verschmelzung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 4) Blatt.MergeCells (4, 2, 4, 4); // Die Position, welche Zeile und Spalte in der Zeile befinden, dh die zusammengeführte Position, wenn es keine Verschmelzung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 5) Blatt.MergeCells (5, 2, 5, 4); // Die Position, welche Zeile und Spalte in der Zeile befinden, dh die zusammengeführte Position, wenn es keine Verschmelzung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 6) Blatt.MergeCells (6, 2, 6, 4); // Die Position, welche Zeile und Spalte in der Zeile befinden, dh die zusammengeführte Position, wenn es keine Verschmelzung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 7) Blatt.MergeCells (7, 2, 7, 4); // Die Position, welche Zeile und Spalte in der Zeile befinden, dh die zusammengeführte Position, wenn es keine Verschmelzung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 8) Blatt.MergeCells (8, 2, 8, 4); // Die Position, welche Zeile und Spalte in der Reihe sind, dh die Position der Zusammenführung. Wenn es keine Verschmelzung gibt, können Sie es nicht schreiben; (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 9) Blatt.Mergecells (9, 2, 9, 4); // Die Position, welche Zeile und Spalte in der Reihe sind, dh die Position der Zusammenführung. Wenn es keine Verschmelzung gibt, können Sie es nicht schreiben; (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 10) Blatt.MergeCells (10, 2, 12, 3); // Die Position, welche Zeile und Spalte in der Reihe sind, dh die Position der Zusammenführung. Wenn es keine Verschmelzung gibt, können Sie es nicht schreiben; (Hier ist die Startlinie 3 bis zur Reihe 4, Spalte 11-13) Blatt.Mergecells (13, 2, 15, 3); // Die Position, welche Zeile und Spalte in der ersten Zeile befinden, dh die zusammengeführte Position, wenn es keine Zusammenführung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 4, Spalten 14-16) Blatt.Mergecells (16, 2, 16, 4); // Die Position, welche Zeile und Spalte in der ersten Zeile befinden, dh die zusammengeführte Position, wenn es keine Zusammenführung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 17) Blatt.Mergecells (17, 2, 17, 4); // Die Position, welche Zeile und Spalte in der ersten Zeile befinden, dh die zusammengeführte Position, wenn es keine Zusammenführung gibt, können Sie sie nicht schreiben. (Hier ist die Startlinie 3 bis zur Reihe 5, Spalte 18) Blatt.Mergecells (18, 2, 18); // Die Position, welche Zeile und Spalte in der ersten Zeile sind, dh die zusammengeführte Position. Wenn es keine Verschmelzung gibt, können Sie es nicht schreiben; (Hier ist die Startlinie 3 bis 5, Spalte 19) */ Sheet.Addcell (Content2a); // Fügen Sie das erste Zellinformationsblatt hinzu.addcell (content2b); // das zweite Zellinformationsblatt hinzufügen. // das dritte Zellinformationsblatt hinzufügen.addcell (content2d); // fügen Sie das vierte Zellinformationsblatt hinzu. // Fügen Sie das Fünfte Zellinformationsblatt hinzu. // fügen Sie das Sechste Zellinformationsblatt hinzu. // Fügen Sie das Siebte Zellinformationsblatt hinzu. // fügen Sie das 8. Zellinformationsblatt hinzu. // Fügen Sie die 9. Zellinformation hinzu. // Setzen Sie den Cell Font Style WritableCellFormat wcf = new WritableCellFormat (WF); // Cell Font WCF.SetBorder (Border.All, BorderLinestyle.Thin) hinzufügen; // Setzen Sie die Grenze-Solid-Linie; WCF.SetverticalInignment (VerticalInignment.centre); // vertikale Ausrichtung WCF.SetAnignment (Alignment.Center) festlegen; // horizontale Zentrierung der Textausrichtung festlegen; WCF.SetWrap (true); // Automatic Line Wrap WrichableFont wf1 = new WritableFont (wrichablefont.CreateFont ("安体"), 11, crapablefont.no_bold, false, jxl.format.underLinestyle.no_underline, jxl.format.colour.black); // Cell Font Style WritableCellFormat WCF1 = new WritableCellFormat (WF1); // Cell Font WCF1.SetBorder (Border.Left, BorderLinestyle.Thin) hinzufügen; // Rand-Solid-Linie festlegen; WCF1.SetverticalInignment (VertikalInalignment.centre); // vertikale Ausrichtung WCF1.SetAnignment (Ausrichtung.Centre) festlegen; // horizontale Zentrierung der Textausrichtung festlegen; // Informationen, die durch die folgende Schleifendatenbank erhalten wurden, int c = 1; // Die Zeilennummer der Excel, die zum Looping Iterator it = list.iterator () verwendet wird; while (it.hasnext ()) {logs tc = (logs) it.next (); DateFormat dfmt = new SimpledateFormat ("yyyy.mm"); String xh = String.Valueof (c); if (xh == null) {xh = ""; } Label content0 = neuer Label (0, C+2, xh, WCF); // Seriennummer String name = tc.getusername (); if (name == null) {name = ""; } Label content1 = neues Etikett (1, C+2, Name, WCF); // Benutzername String xrpresent = tc.getLogtime (); if (xrpresent == null) {xrpresent = ""; } Label content2 = neues Etikett (2, C+2, xrpresent, WCF); // zeitstring czmodel = tc.getModel (); if (czmodel == null) {czmodel = ""; } Label content3 = neues Etikett (3, C+2, Czmodel, WCF); // Betriebsmodul String sex = tc.getContent (); if (sex == null) {sex = ""; } Label content4 = neues Etikett (4, C+2, Sex, WCF); // Betriebsinhaltsstring -String -Geburtstag = tc.getoperate (); if (birthday == null) {birthday = ""; } Label content5 = neues Etikett (5, C+2, Geburtstag, WCF); // Operation Action String Nation = tc.getip (); if (nation == null) {nation = ""; } Label content6 = neues Etikett (6, C+2, Nation, WCF); // Operator IP String origin = tc.getOrgname (); if (Origin == null) {Origin = ""; } Label content7 = neues Etikett (7, C+2, Origin, WCF); // oder organisation string bplace = tc.getremark (); if (bplace == null) {bplace = ""; } Label content8 = neues Etikett (8, C+2, BPlace, WCF); // Bemerkung String ABC = ""; Etikett content9 = neuer Etikett (9, C+2, ABC, WCF1); // Bemerkenblatt.setRowView (C+2, 600); // Setzen Sie das Leitungshöhenblatt. STAD.SETROWVIEW (C+2, 600); STAD.SETROWVIEW (C+2, 600); STAD.SETROWVIEW (C+2, 600); STAD.SETROWVIEW (C+2, 600); STAD.SETROWVIEW (C+2, 600); STAD.SETROWVIEW (C+2, 600); STAD.SETROWVIEW (C+2, 600); Blatt.MergeCells (0, C+2, 0, C+2); // Mergecells (1, C+2, 0, C+2); // Mergecells (A, B, C, D) Zell -Merge -Funktionsblatt.MergeCells (2, C+2, 0, C+2); // eine Zellspaltennummernblatt.MergeCells (3, C+2, 0, C+2); // B -Zellliniennummernblatt.MergeCells (4, C+2, 0, C+2); // C aus der Zelle [a, b], fusionieren Sie zu C -Säulenblatt. // d aus der Zelle [a, b], fucken Sie sich mit Blatt aus Zeile D herab. Blatt.MergeCells (7, C+2, 0, C+2); Blatt.MergeCells (8, C+2, 0, C+2); Blatt.MergeCells (9, C+2, 0, C+2); Sheet.Addcell (Content0); Sheet.Addcell (Content1); Sheet.Addcell (Content2); Sheet.Addcell (Content3); Sheet.Addcell (Content4); Sheet.Addcell (Content5); Sheet.Addcell (Content6); Sheet.Addcell (Content7); Sheet.Addcell (Content8); Sheet.Addcell (Content9); C ++; } wbook.write (); // in die Datei wbook.close () schreiben; os.close (); } catch (Ausnahme e) {neue PaikeException ("Exportdatei -Fehler"); }}Die obige Beispielerläuterung für JXL -Exportdaten in Excel ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.