avantage:
JXL prend très bien en charge le chinois, et l'opération est simple, et la méthode dépend du nom et du sens.
JXL est une API Java pure, qui fonctionne parfaitement sur les plates-formes. Le code peut être exécuté sur Windows ou Linux sans réécrire
Prend en charge toutes les versions d'Excel 95-2000 (il est dit en ligne qu'il peut prendre en charge Excel 2007 pour le moment, mais ne l'a pas encore essayé)
Générer le format standard Excel 2000
Police de support, numéro, opérations de date
Capable de modifier les propriétés des cellules
Les images et les graphiques sont pris en charge, mais cette API a une prise en charge limitée pour les graphiques et les graphiques, et ne reconnaît que le format PNG.
défaut:
Support d'image inefficace et imparfait et support moins puissant pour les formats que POI
Cas:
String time = (new SimpledateFormat ("yyyymmddhhmmss")). Format (new Date ()); String fname = "System Log" + Times; // Nom de fichier Liste <logs> list = logsService.SelectForList (hql.toString ()); String path = request.getSession (). GetServletContext (). GetRealPath ("/") + "xls /" + (new SimpledateFormat ("yyyymmdd")). Format (new Date ()); Fichier fichier = nouveau fichier (chemin); // Créer if (! File.exists () &&! File.isdirectory ()) {file.mkdir (); } réponse.setContentType ("Application / vnd.ms-excel; charset = utf-8"); // // spécifiez le type de sauvegarde du fichier. Response.SetcharAtterencoding ("UTF-8"); ExportUtil.writer_log (demande, fname, liste, réponse); // télécharger vers localLa méthode d'exportation écrivain_log est la suivante
/ ** * générer un fichier Excel et l'exportation vers l'ordinateur local * @param fname Nom du fichier * @param liste les données à imprimer, c'est-à-dire la liste de données des requêtes de base de données * / public static void writer_log (httpServletRequest request, string fname, list list, httpservletResponse réponse) {essai {Outputtream OSO = réponse. Response.Reset (); // Effacer le flux de sortie // Ce qui suit est le début du traitement du nom de fichier chinois Response.Setcharacterencoding ("UTF-8"); // Définit le format d'encodage du contenu correspondant if (ismsbrowser (request)) fname = java.net.urlencoder.encode (fname, "utf-8"); else fname = new String (fname.getBytes ("utf-8"), "iso-8859-1"); Response.sethEader ("Content-Disposition", "attachement; filename =" + fname + ". xls"); Response.SetContentType ("Application / MSExcel; charSet = UTF-8"); // Définissez le type de sortie // Le traitement du nom de fichier chinois se termine // Le classeur Importa Import Jxl.WorkBook; WITCIBLAWWRAWBOOK WBOOK = Workbook.Createworkbook (OS); // Créer un fichier Excel WriteTheSheet sheet = wbook.createSheet ("System Log", 0); // Nom de la feuille de travail CellView CellView = new CellView (); CellView.SetAutoSize (true); // définir la feuille de taille automatique.SetColumnView (0, 8); // Définit la largeur de la cellule, 0 est le numéro de colonne, 8 est la feuille de largeur.setColumnView (1, 20); // Définit la largeur de la cellule, 1 est le numéro de colonne, 20 est la feuille de largeur.setColumnView (2, 24); sheet.setColumnView (3, 20); sheet.setColumnView (4, 30); sheet.setColumnView (5, 13); sheet.setColumnView (6, 15); sheet.setColumnView (7, 32); sheet.setColumnView (8, 15); // Définit Excel FONT WIDRABLEFONT WFONT = NOUVEAU ÉCRITABLEFONT (WITCKABLEFONT.CREATEFONT ("宋体"), 22, WITCHABLEFONT.BOLD, FALSE, JXL.FORMAT.UNDERLINEYLE.NO_UNDERLINE, JXL.FORMAT.COLOUR.BLACK); // Set Cell Font Style WriteTableCellFormat TitleFormat = new WritableCellFormat (WFONT); // ajouter de la police de cellule TitleFormat.SetAlignment (Alignment.Cente); // définir l'alignement du centrage de texte; String [] title = {"System Log"}; // Définissez le démarrage de l'en-tête de table Excel pour (int i = 0; i <title.length; i ++) {// Ce qui est importé ici est l'importation jxl.write.label; Label exceltItle = new Label (i, 0, title [i], titleformat); // Contenu de la cellule // Commande de paramètre: Colonne de démarrage, ligne de démarrage, colonne de fin, feuille de ligne de fin.Mergecells (0, 0, 8, 0); // Emplacement, quelle ligne, quelle colonne sheet.addcell (exceltitle); // Ajouter des informations cellulaires} // Définissez l'extrémité de l'en-tête de la table Excel // la première ligne, c'est-à-dire le temps d'affichage, paramètres: (colonne, ligne, contenu) witchablefont wfonttime = new WriteableFont (witchablefont.createfont ("宋体"), 11, witteablefont.no_bold, false, jxl.format.undinnestyle.No_underline, jxl.format.colour.black); // Set Cell Font Style WriteTableCellFormat titleTime = new WritableCellFormat (WFONTTime); // ajouter de la police cellulaire titleTime.setAlignment (alignment.Right); // définir l'alignement du centrage de texte; DateFormat df = new SimpledateFormat ("Yyyy-mm-dd"); // sheet.setColumnView (1, CellView); // Définissez automatiquement la largeur de la colonne en fonction de l'étiquette de contenu contenu contenu = new Label (0, 1, df.format (new Date ()), titleTime); // Contenu cellulaire // Sheet.Mergecells (16, 1, 18, 1); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position fusionnée. S'il n'y a pas de fusion, vous ne pouvez pas écrire sheet.addcell (contenudate); // Ajouter des informations sur les cellules // la fin de la première ligne // La deuxième ligne montre la barre de titre de la condition WriteableFont wfont2 = new WriteableFont (witchablefont.createfont ("宋体"), 11, withingfont.bold, false, jxl.format.underlinestyle.no_underline, jxl.format.colour.black); // Définir le style de police de cellule WriteTableCellFormat TitleFormat2 = new WriteMableCellFormat (WFONT2); // Ajouter la police de cellule TitleFormat2.SetBorder (border.all, borderlinestyle.thin); // définit la ligne de la frontière solide; TitleFormat2.SetAlignment (Alignment.Cente); // définit l'alignement centré du texte; TitleFormat2.SetVerticalAlignment (VerticalAlignment.Centre); // Définir le centrage vertical; Label Content2a = new Label (0, 2, "Numéro de série", TitleFormat2); // Contenu cellulaire - 1st Grid Label Content2b = new Label (1, 2, "Nom d'utilisateur", TitleFormat2); // Contenu cellulaire - 2nd Grid Label Content2c = new Label (2, 2, "Record Time", TitleFormat2); // Contenu cellulaire - 3rd Grid Label Content2c = new Label (2, 2, "Record Time", TitleFormat2); // Contenu cellulaire - 3rd Grid Label Content2c = new Label (2, 2, "Record Time", TitleFormat2); // Contenu cellulaire - 3rd Grid Label Content2d = new Label (3, 2, "Operation Module", TitleFormat2); // Contenu cellulaire - 4th Grid Label Content2e = new Label (4, 2, "Operation Content", TitleFormat2); // Contenu cellulaire - 5th Grid Label Content2f = new Label (5, 2, "Operation Action", TitleFormat2); // Contenu cellulaire - 6th Grid Label Content2G = new Label (6, 2, "Operator ip", TitleFormat2); // Contenu cellulaire - 7th Grid Label Content2h = New Label (7, 2, "Operation Organization", TitleFormat2); // Contenu cellulaire - 8th Grid Label Content2i = new Label (8, 2, "Note", TitleFormat2); // Contenu cellulaire - 9e feuille de grille.Mergecells (0, 1, 8, 1); /*Sheet.Mergecells(0, 2, 0, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position de la fusion, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, la colonne 1) Feuille.Mergecells (1, 2, 1, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position de la fusion, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, la colonne 2) Feuille.Mergecells (2, 2, 2, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 3) feuille.Mergecells (3, 2, 3, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 4) feuille.Mergecells (4, 2, 4, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 5) feuille.Mergecells (5, 2, 5, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 6) feuille.Mergecells (6, 2, 6, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 7) feuille.Mergecells (7, 2, 7, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 8) feuille.Mergecells (8, 2, 8, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position de la fusion. S'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 9) feuille.Mergecells (9, 2, 9, 4); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position de la fusion. S'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 10) feuille.Mergecells (10, 2, 12, 3); // L'emplacement, quelle ligne et colonne sont dans la ligne, c'est-à-dire la position de la fusion. S'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 4, colonne 11-13) feuille.Mergecells (13, 2, 15, 3); // L'emplacement, quelle ligne et colonne sont dans la première ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 4, colonnes 14-16) feuille.Mergecells (16, 2, 16, 4); // L'emplacement, quelle ligne et colonne sont dans la première ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 17) feuille.Mergecells (17, 2, 17, 4); // L'emplacement, quelle ligne et colonne sont dans la première ligne, c'est-à-dire la position fusionnée, s'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à la ligne 5, colonne 18) feuille.Mergecells (18, 2, 18); // L'emplacement, quelle ligne et colonne sont dans la première ligne, c'est-à-dire la position fusionnée. S'il n'y a pas de fusion, vous ne pouvez pas l'écrire; (Voici la ligne de départ 3 à 5, colonne 19) * / sheet.addcell (contenu2a); // ajouter la première fiche d'information de cellule.AddCell (contenu2b); // ajouter la deuxième fiche d'information de cellule.AddCell (contenu2c); // ajouter la troisième fiche d'information de cellule.AddCell (contenu2d); // ajouter la quatrième fiche d'information de cellule.AddCell (contenu2e); // ajouter la cinquième fiche d'information de cellule.AddCell (contenu2f); // Ajouter la sixième fiche d'information de cellule.AddCell (contenu2g); // Ajouter la septième fiche d'information de cellule.AddCell (Content2h); // Ajouter la 8th Cell Information Sheet.AddCell (Content2i); // Ajouter la 9th Cell Information witteablefont wf = new WriteableFont (wditablefont.createfont ("安安"), 11, witchablefont.no_bold, false, jxl.format.undernestyle.no_underline, jxl.format.colour.black); // Définit le style de police de cellule WriteTableCellFormat wcf = new WriteTableCellFormat (WF); // ajouter la police cellulaire wcf.setborder (border.all, borderlinestyle.thin); // Réglez la bordure - la ligne solide; wcf.setverticalAlignment (verticalalignment.centre); // Définir l'alignement vertical wcf.setalignment (alignement.centre); // définir l'alignement du centrage horizontal du texte; wcf.setwrap (true); // enveloppe automatique enveloppe WriteableFont wf1 = new WriteableFont (waitablefont.createfont ("安体"), 11, witchablefont.no_bold, false, jxl.format.undernestyle.no_underline, jxl.format.colour.black); // Définir le style de police de cellule WriteTableCellFormat WCF1 = new WriteTableCellFormat (WF1); // Ajouter la police cellulaire WCF1.SetBorder (border.left, borderlinestyle.thin); // définit la ligne de la frontière solide; wcf1.setverticalAlignment (verticalAlignment.Cente); // Définir l'alignement vertical wcf1.setalignment (alignement.centre); // définir l'alignement du centrage horizontal du texte; // Informations obtenues par la base de données de boucle suivante Int C = 1; // Le numéro de ligne d'Excel utilisé pour le boucle itérateur IT = list.Itorator (); while (it.hasnext ()) {logs tc = (logs) it.next (); DateFormat dfmt = new SimpledateFormat ("yyyy.mm"); String xh = string.valueof (c); if (xh == null) {xh = ""; } Étiquette Content0 = new Label (0, C + 2, XH, WCF); // Numéro de série Nom de chaîne = TC.GetUserName (); if (name == null) {name = ""; } Étiquette Content1 = new Label (1, C + 2, nom, WCF); // String de nom d'utilisateur xrpresent = tc.GetLogTime (); if (xrpresent == null) {xrpresent = ""; } Étiquette contenu2 = nouveau label (2, c + 2, xrpresent, wcf); // String de temps d'enregistrement czmodel = tc.GetModel (); if (czModel == null) {czModel = ""; } Étiquette contenu3 = new Label (3, C + 2, CzModel, WCF); // Module d'opération String Sex = TC.GetContent (); if (sexe == null) {sexe = ""; } Étiquette contenu4 = nouveau label (4, c + 2, sexe, wcf); // opération de contenu String anniversaire = tc.GetOperate (); if (anniversaire == null) {anniversaire = ""; } Étiquette contenu5 = nouveau label (5, c + 2, anniversaire, wcf); // Opération Action String nation = tc.GetIp (); if (nation == null) {nation = ""; } Étiquette contenu6 = nouveau label (6, c + 2, nation, wcf); // Opérateur IP String Origin = tc.GetorGname (); if (origine == null) {origin = ""; } Étiquette contenu7 = new Label (7, C + 2, Origin, WCF); // ou une chaîne d'organisation BPlace = tc.GetRemark (); if (bplace == null) {blace = ""; } Étiquette contenu8 = new Label (8, C + 2, BPlace, WCF); // Remarque String ABC = ""; Étiquette contenu9 = new Label (9, C + 2, ABC, WCF1); // Remarque Sheet.SetRowView (C + 2, 600); // Définissez la feuille de hauteur de ligne.SetRowView (C + 2, 600); sheet.setRowView (C + 2, 600); sheet.setRowView (C + 2, 600); sheet.setRowView (C + 2, 600); sheet.setRowView (C + 2, 600); sheet.setRowView (C + 2, 600); sheet.setRowView (C + 2, 600); sheet.setRowView (C + 2, 600); sheet.Mergecells (0, C + 2, 0, C + 2); // Mergecells (1, C + 2, 0, C + 2); // Mergecells (A, B, C, D) Fonction de fonction de fusion cellulaire.Mergecells (2, C + 2, 0, C + 2); // une feuille de colonne de cellule Sheet.Mergecells (3, C + 2, 0, C + 2); // b line de cellules feuille.Mergecells (4, c + 2, 0, c + 2); // C à partir de la cellule [a, b], fusionnez jusqu'à la feuille de colonne C.Mergecells (5, C + 2, 0, C + 2); // d de la cellule [a, b], fusionnez vers la ligne d sheet.Mergecells (6, c + 2, 0, c + 2); feuille.Mergecells (7, C + 2, 0, C + 2); feuille.Mergecells (8, C + 2, 0, C + 2); feuille.Mergecells (9, C + 2, 0, C + 2); sheet.addcell (contenu0); sheet.addcell (contenu1); sheet.addcell (contenu2); sheet.addcell (contenu3); sheet.addcell (contenu4); sheet.addcell (contenu5); sheet.addcell (contenu6); sheet.addcell (contenu7); sheet.addcell (contenu8); sheet.addcell (contenu9); C ++; } wbook.write (); // Écrivez dans le fichier wbook.close (); os.close (); } catch (exception e) {lancez new paikeException ("Erreur de fichier d'exportation"); }}L'exemple d'exemple ci-dessus des données d'exportation de JXL vers Excel est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.