Hoy quiero resolver un problema que encontré hace algún tiempo.
Debido a los requisitos del proyecto, se debe realizar parte de la función de exportación. Utilicé la exportación de la compañía al principio, pero era extraño que algunos módulos informaran un error de 500 al exportar. Descubrí que después de eliminar algunos campos, volvió a la normalidad. En ese momento, debido a que el proyecto era apretado, eliminé temporalmente algunos, pero no era una solución a largo plazo. Más tarde, lo revisé y lo resolví en la base original. La operación actual sigue siendo estable. Lo compartiré contigo.
La exportación requiere tres partes, JS, métodos públicos y métodos de fondo.
código JS
function exportData () {// Los parámetros recibidos por el primer plano rwmc = $ ("#txt_rwmc"). val (); rwlb = $ ("#com_rwlb"). ComboBox ("getValues"). unirse (","); // llamando a la función de exportación de fondo var servicio = nuevo servicio ("cx.rybjcxbndservice.exprotexcel"); var str = "<rwmc>" + rwmc + "</rwmc> <rwlb>" + rwlb + "</rwlb>"; var res = servicio.doservice (str); var odoC = loadxml (res); if (servicio.getCode ()! = "2000") {showMessage ("Query Faily:"+Service.getMessage ()); devolver; } var nodata = OdoC.SelectsingLenode ("root/nodata"). Text; if (nodata == "nodata") {showMessage ("¡No hay datos!"); devolver; } // Obtener información de exportación var TitLename = OdoC.SelectsingLenode ("root/title_name"). Text; var filename = OdoC.SelectSingLenode ("root/file_name"). Text; var outputinfo = OdoC.SelectSingLenode ("root/outputinfo"). Text; var descargar_path = OdoC.SelectsingLenode ("root/download_path"). Text; if (outputinfo! = "") {showMessage (outputInfo); devolver; } if (confirmar ("¡Exportar con éxito! Confirmar el archivo de descarga? /N El nombre del archivo es:"+nombre de archivo)) {var file = filename; var showfile = titLename + ".xls"; showfile = decodeuricponent (showfile); var idx = document.url.indexof ("/adp"); if (idx == -1) {alerta ("La dirección de host no se puede reconocer:" + document.url); devolver; } var host = document.url.substring (0, IDX); Var width = screen.width; var altura = pantalla.Height; depurador; // Abra la página de descarga var param = "toolar = no, ubicación = no, status = yes, resizable = no, scrollbars = yes, top =" + altura + ", izquierda =" + ancho + ", width = 100, altura = 100"; // --------------------------------------------------------------------------------------------------------------------------------------------------- (isie6) {window.location.href = host + "/adp/work/gzkp/common/js/download_new.jsp?file=" + archivo + "& showfile =" + showfile + "& download_path =" + descargar_path; } else {window.open (host + "/adp/work/gzkp/common/js/download_new.jsp?file=" + archivo + "& showfile =" + showfile + "& download_path =" + descargar_path, "_blank", param); }}}Categoría pública
paquete 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.hsssfcell; import org.apache.poi2.hssf.usermodel.hssfrow; import org.apache.poi2.hssf.usermodel.hssfsheet; import org.apache.poi2.hssf.usermodel.hssfworkbook; import ctaiis.business.dashboard.service.exportexcel; import; importar; import ctaiis.config.config; import ctaiis.services.data.datawindow; import ctaiis.services.xml.xmldataObject; import ctaiis.services.xml.xmlParser; import ctaiis.util.stringex; import jxl.Workbook; import jxl.format.alignmentment; jxl.Write.label; import jxl.Write.WritableCellFormat; import jxl.write.writableFont; import jxl.Write.WritableSheSteet; import jxl.Write.WrititableWorkbook;/** * <P> Título: Generar archivo Excel </p> * <p> Descripción: Convertir cadena de cadena a Document Document </p> * <p> Copyright: Copyright (Copyright (Copyright (Copyright: 2004 </p> * <p> Compañía: DC </p> * @author fengzg * @Version 1.0 * Tiempo: 2015-12-28 */public class CreateExcel {String static final privado config_file_path = config.ctais_home; WRATITYWORKBOOK WWB = NULL; XmldataObject xdo = null; public CreateExcel () {} / ** * Genere Excel * @param sql consulta sql * @param czrydm código de operador * @param títulos exportar título de columna * @param exltitle encabezado de mesa Excel * @return * @throws excepción * / public string string string ( Hssfworkbook wb = new HSSFWorkBook (); HSSFSheet Sheet = WB.CreateSheet (); ExportExcel exportExcel = new ExportExcel (WB, Hoja); StringBuffer sffer = new StringBuffer (); // int Colnum = 30; Datawindow dw = datawindow.dynamicCreate (sql.toString ()); dw.setConnectionName (IComm.gzkpjndi); largo dwret = dw.retrieve (); if (dwret <= 0) {sffer.append ("<Dodata> nodata </dodata>"); return sffer.ToString (); } else {sffer.append ("<Dodata> </dodata>"); } int colnum = dw.getColumnCount (); // Defina el ancho de la columna para la columna de hoja de trabajo (en realidad cambie el número de columnas por usted mismo) para (corto i = 0; i <= colnum; i ++) {sheet.setColumnWidth (i, (corto) 4000); } // Crear estilo celular HSSFCellStyle CellheadStyle = WB.CreateCellStyle (); // especificar la alineación del centro de celdas Cellheadstyle.setalignment (hssfcellstyle.align_center); // Especifique la alineación de Cell Center VERTICY CellheadStyle.SetVerticalAlignment (HSSFCellStyle.vertical_center); // Especifique el envoltorio de la línea celular cuando el contenido de la celda no se muestra debajo de Cellheadstyle.SetWrapText (verdadero); // establecer la fuente de celda hssffont headfont = wb.createFont (); Headfont.SetBoldweight (hssffont.boldweight_bold); HeadFont.SetFontName ("安一"); Headfont.setFontheight ((corto) 200); Cellheadstyle.setFont (Headfont); // Crear el encabezado del informe Fecha dt = nueva fecha (); SimpleDateFormat sdt = new SimpleDateFormat ("yyyymmddhhmmsss"); Cadena sfm = czrydm + "_" + sdt.format (dt); // establecer el encabezado de columna ExportExcel.CreateNormalhead (Exltitle, Colnum-1); HSSFROW ROW1 = SHEY.CREATROW (1); for (int i = 0; i <titles.length; i ++) {hssfcell cell = row1.createCell ((corto) i); Cell.setEncoding (hssfcell.encoding_utf_16); Cell.SetCellStyle (Cellheadstyle); Cell.SetCellValue (títulos [i]); } Valor de objeto = ""; // establece el estilo de tabla hssfcellstyle cellstyle = wb.createCellStyle (); // especificar la alineación del centro de celdas CellStyle.Setalignment (hssfcellstyle.align_center); // Especifique la alineación del centro de la celda CellStyle. // Especificar el envoltorio de la línea celular cuando el contenido de la celda no se puede mostrar CellStyle.SetWrapText (verdadero); // establecer la fuente de la celda hssffont font = wb.createFont (); font.SetBoldWeight (hssffont.ss_none); font.setFontName ("宋体"); Font.SetFontheight (((corto) 200); CellStyle.SetFont (fuente); for (int i = 0; i <dw.getrowCount (); i ++) {hssfrow row = sheet.createrow (i+2); for (int j = 1; j <= dw.getColumnCount (); j ++) {hssfcell cell = row.createCell ((corto) (j-1)); Cell.setEncoding (hssfcell.encoding_utf_16); Cell.SetCellStyle (CellStyle); valor = dw.getitemany (i, j-1); if (value == null) {cell.setCellValue (""); } else {cell.setCellValue (value.toString ()); }}} // Establezca la ruta de exportación, tenga en cuenta aquí que si se trata de un sistema de Linux que requiere la creación de ruta manual, (si alguien está claro sobre el motivo aquí, dame algún consejo) cotice la ruta de archivo recién creada una ruta de cadena = "/export/"; Archivo archivo = nuevo archivo (ruta); if (! file.exists ()) {file.mkdirs (); } String filename = sfm+". Xls"; // string pth = path.trim () + file.separator + filename; Cadena pth = path.trim () + nombre de archivo; pth = pth.trim (); String outputInfo = exportExcel.outPutexcel (PTH); sffer.append ("<title_name>" + sfm + "</title_name>"); sffer.append ("<download_path>" + path + "</download_path>"); sffer.append ("<file_name>" " + nombre de archivo +" </file_name> "); sffer.append (" <utedInfo> " + outputInfo +" </outputinfo> "); return sffer.ToString ();} Catch (excepción e) {E.PrintStackTrace (); Shouge New Exception (E.GetMessage ();}}}}}}}}Código de fondo
/*** Exportar función* @param xdo parámetro de primer plano* @param czrydm código de operador* @return información xls* @throws excepción descripción*/public string exportExcel (xmldataObject args, string czrydm) lanza excepción {// Recibe parámetros de consultas aprobados por el primer plano de cadena rwmc = stringx.snull (getitemvale (rwMc ("; String rwlb = stringEx.snull (args.getItemValue ("rwlb")); if (null! = rwmc &&! "". Equals (rwmc)) {sqlwhere.append ("y a.rwmc como '%"+rwmc+"%'"); } if (null! = rwlb &&! "". Equals (rwlb)) {sqlwhere.append ("y a.rwlb_dm = '"+rwlb+"'"); } StringBuilder sql = new StringBuilder (); // Consulta de empalme sql sql.append ("seleccione rwxh, rwmc de rwxx") .append (sqlwhere) .append ("orden por rwxh)") .append (sqliswhere); // String de título de columna exportada [] títulos = {"Número de serie de la tarea", "Nombre de la tarea"}; // instanciar la clase pública createExcel Excel = new CreateExcel (); return Excel.newToExcel (sql.ToString (), czrydm, títulos, "encabezado exlcel"); }El método anterior para exportar Excel (que admite es decir, la versión baja) es todo el contenido que he compartido con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.