Aujourd'hui, je veux résoudre un problème que j'ai rencontré il y a quelque temps.
En raison des exigences du projet, une partie de la fonction d'exportation doit être effectuée. J'ai utilisé l'exportation de l'entreprise au début, mais il était étrange que certains modules aient signalé une erreur de 500 lors de l'exportation. J'ai trouvé qu'après avoir supprimé certains champs, il est revenu à la normale. À ce moment-là, parce que le projet était serré, j'en ai temporairement en supprimé, mais ce n'était pas une solution à long terme. Plus tard, je l'ai révisé et réglé sur la base d'origine. L'opération actuelle est toujours stable. Je vais le partager avec vous.
L'exportation nécessite trois parties, JS, méthodes publiques et méthodes de fond.
Code JS
fonction exportdata () {// Les paramètres reçus par le premier plan rwmc = $ ("# txt_rwmc"). val (); rwlb = $ ("# com_rwlb"). ComboBox ("getValues"). JOIN (","); // Appel de la fonction d'exportation d'arrière-plan var service = nouveau service ("cx.rybjcxbndsservice.exprotexcel"); var str = "<rwmc>" + rwmc + "</rwmc> <rwlb>" + rwlb + "</rwlb>"; var res = service.doservice (str); var odoc = chargexml (res); if (service.getcode ()! = "2000") {showMessage ("Query a échoué:" + service.getMessage ()); retour; } var nodata = odoc.selectSingLenode ("root / nodata"). text; if (nodata == "nodata") {showMessage ("pas de données!"); retour; } // obtenir des informations d'exportation var titleName = odoc.selectSingLenode ("root / title_name"). Text; var filename = odoc.selectSingLenode ("root / file_name"). text; var outputInfo = ODOC.SelectSingLenode ("root / outputInfo"). Texte; var download_path = odoc.selectSingLenode ("root / download_path"). texte; if (outputInfo! = "") {showMessage (outputInfo); retour; } if (Confirm ("Exporter avec succès! Confirmez le fichier de téléchargement? / N Le nom du fichier est:" + nom de fichier)) {var fichier = nom de fichier; var showfile = titLename + ".xls"; showFile = decodeuComponent (showFile); var idx = document.url.indexof ("/ adp"); if (idx == -1) {alert ("L'adresse hôte ne peut pas être reconnue:" + document.url); retour; } var host = document.url.substring (0, idx); var width = Screen.Width; var height = Screen.Height; débogueur; // Ouvrez la page de téléchargement var param = "Barre d'outils = non, emplacement = non, status = Oui, Resizable = Non, Scrollbars = Oui, top =" + height + ", Left =" + width + ", width = 100, height = 100"; // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (ISIE6) {window.Location.href = host + "/adp/work/gzkp/common/js/download_new.jsp?file=" + file + "& showfile =" + showfile + "& download_path =" + téléchargement_path; } else {window.open (host + "/adp/work/gzkp/common/js/download_new.jsp?file=" + file + "& showfile =" + showfile + "& download_path =" + téléchargement_path, "_blank", param); }}}Catégorie publique
package ctais.business.gzkp.common; import java.io.file; import java.io.fileInputStream; import java.text.simpledateformat; import java.util.date; import org.apache.poi2.hssf.usermodel.hssfcell; importation; org.apache.poi2.hssf.usermodel.hssfrow; import org.apache.poi2.hssf.usermodel.hssfsheet; Import org.apache.poi2.hssf.UserModel.hssfworkBook; Importer ctaiis.usiness.dashoard.service ctaiis.config.config; import ctaiis.services.data.datawindow; import ctaiis.services.xml.xmldataObject; Import ctaiis.services.xml.xmlparser; Import Ctaiis.util.stringEx; import JxlworkBook; import Jxl.format.Aclacement; import; jxl.write.label; importer jxl.write.writablecellformat; import jxl.write.witablefont; import jxl.write.wriTableSheet; import jxl.write.witableworkbook; / ** * <p> title: générer un fichier excel </p> * <p>: convertir la chaîne de chaîne à Excel Document 2004 </p> * <p> Company: dc </p> * @author Fengzg * @version 1.0 * Time: 2015-12-28 * / classe publique CreateExcel {chaîne statique finale privée config_file_path = config.ctais_home; WriteableworkBook wwb = null; XmldataObject xdo = null; public CreateExcel () {} / ** * Générer Excel * @param SQL Query SQL * @param Czrydm Operator code * @param titres de la colonne d'export {Hssfworkbook wb = nouveau hssfworkbook (); Hssfsheet sheet = wb.createSheet (); Exportexcel Exportexcel = new Exportexcel (WB, feuille); StringBuffer sffer = new StringBuffer (); // int colnum = 30; DataWindow dw = dataWindow.damiccreate (sql.toString ()); dw.setConnectionName (icomm.gzkpjndi); long dwret = dw.retReve (); if (dwret <= 0) {sffer.append ("<nodata> nodata </ nodata>"); return sffer.toString (); } else {Sffer.APPEND ("<NODATA> </ NODATA>"); } int colnum = dw.getColumnCount (); // Définissez la largeur de la colonne pour la colonne de feuille de travail (modifiez en fait le nombre de colonnes par vous-même) pour (court i = 0; i <= colnum; i ++) {sheet.setColumnwidth (i, (short) 4000); } // Créer un style cellulaire hssfCellStyle CellheadStyle = wb.createCellStyle (); // Spécifiez l'alignement du centre cellulaire CellHeadStyle.SetAlignment (hssfcellStyle.align_center); // Spécifiez la cellule d'alignement du centre verticalement CellHeadStyle.SetVerticalAlignment (hssfcellStyle.vertical_center); // Spécifiez l'emballage de la lignée cellulaire lorsque le contenu de la cellule n'est pas affiché sous CellheadStyle.SetWrapText (true); // Définit la police cellulaire hssffont headfont = wb.createfont (); headfont.setboldweight (hssffont.boldweight_bold); headfont.setFontName ("安一"); headfont.setfontheight ((court) 200); CellheadStyle.setfont (Headfont); // Créer la date d'en-tête de rapport dt = new Date (); SimpledateFormat sdt = new SimpledateFormat ("yyyymmddhhmmsss"); String sfm = czrydm + "_" + sdt.format (dt); // Définir l'en-tête de colonne exportexcel.CreateNormalHead (exltitle, colnum-1); Hssfrow row1 = sheet.createrow (1); for (int i = 0; i <titres.length; i ++) {hssfcell cell = row1.createCell ((short) i); Cell.SetEncoding (hssfcell.encoding_utf_16); Cell.SetCellStyle (CellheadStyle); Cell.SetCellValue (titres [i]); } Objet valeur = ""; // Définissez le style de table hssfCellStyle cellStyle = wb.createCellStyle (); // Spécifiez l'alignement du centre cellulaire CellStyle.SetAlignment (hssfcellStyle.align_center); // Spécifiez la cellule d'alignement du centre verticalement CellStyle.SetVerticalAlignment (hssfcellStyle.vertical_center); // Spécifiez l'emballage de la ligne cellulaire lorsque le contenu de la cellule ne peut pas être affiché CellStyle.SetWrapText (true); // Définit la police cellulaire hssffont font = wb.createfont (); FONT.SetBoldWeight (hssffont.ss_none); font.setFontName ("宋体"); Font.setFontheight ((court) 200); Cellstyle.setfont (FONT); for (int i = 0; i <dw.getRowCount (); i ++) {hssfrow row = sheet.createrow (i + 2); pour (int j = 1; j <= dw.getColumnCount (); j ++) {hssfCelll cell = row.createCell ((short) (j-1)); Cell.SetEncoding (hssfcell.encoding_utf_16); Cell.SetcellStyle (CellStyle); valeur = dw.getIteMany (i, j-1); if (value == null) {cell.setCellValue (""); } else {Cell.SetCellValue (valeur.toString ()); }}} // Définissez le chemin d'exportation, veuillez noter ici que s'il s'agit d'un système Linux qui nécessite une création de chemin manuelle, (si quelqu'un est clair sur la raison ici, veuillez me donner des conseils) citez la nouvelle chaîne de chemin de fichier de fichier (/ export / "; Fichier fichier = nouveau fichier (chemin); if (! file.exists ()) {file.mkDirs (); } String filename = sfm + ". Xls"; // String pth = path.trim () + file.separator + nom de fichier; String pth = path.trim () + nom de fichier; pth = pth.trim (); String outputInfo = exportexcel.outputexcel (pth); Sffer.APPEND ("<Title_name>" + SFM + "</TITLE_NAME>"); Sffer.APPEND ("<téléchargement_path>" + path + "</ download_path>"); Sffer.APPEND ("<Fichier_Name>" "+ FileName +" </ File_Name> "); Sffer.APPEND (" <putputInfo> "+ OutputInfo +" </putputInfo> "); return Sffer.ToString ();} Catch (exception e) {e.printStackTrace (); Throw Exception (E.getMessage ());}}}}}}}}}Code d'arrière-plan
/ ** * Fonction d'exportation * @param xdo Paramètre de premier plan * @Param Czrydm Operator Code * @return Informations XLS générées * @throws Exception Description * / public String Exportexcel (XMLDataObject Args, String czrydm) lance l'exception {// Recevoir des paramètres de requête réduits par la chaîne de premier plan RWMC = Strisex.snull (args.getItemValue ("rwmc")); String rwlb = stringEx.snull (args.getItemValue ("rwlb")); if (null! = rwmc &&! "". equals (rwmc)) {sqlwhere.append ("et a.rwmc comme '%" + rwmc + "%'"); } if (null! = rwlb &&! "". equals (rwlb)) {sqlwhere.append ("et a.rwlb_dm = '" + rwlb + "'"); } StringBuilder sql = new StringBuilder (); // Splicing Query SQL SQL.APPEND ("SELECT RWXH, RWMC FROM RWXX") .APPEND (SQLWORE) .APPEND ("ORDRE par RWXH)") .APPEND (SQLISWORE); // chaîne de titres de colonne exportée [] titres = {"tâche numéro de série", "nom de tâche"}; // Instancier la classe publique CreateExcel Excel = new CreateExcel (); return excel.newtoExcel (sql.toString (), czrydm, titres, "en-tête exlcel"); }La méthode ci-dessus pour exporter Excel (support IE Low Version) est tout le contenu que j'ai partagé avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.