Hoje eu quero resolver um problema que encontrei há algum tempo.
Devido aos requisitos do projeto, parte da função de exportação deve ser feita. Usei a exportação da empresa no início, mas era estranho que alguns módulos tenham relatado um erro de 500 ao exportar. Descobri que, depois de excluir alguns campos, ele voltou ao normal. Naquela época, como o projeto estava apertado, eu excluí temporariamente alguns, mas não era uma solução de longo prazo. Mais tarde, revisei e resolvi -o de maneira original. A operação atual ainda está estável. Vou compartilhar com você.
A exportação requer três partes, JS, métodos públicos e métodos de fundo.
Código JS
função exportData () {// Os parâmetros recebidos pelo primeiro plano rwmc = $ ("#txt_rwmc"). val (); rwlb = $ ("#com_rwlb"). ComboBox ("getValues"). Join (","); // chamando a função de exportação em segundo plano var Service = new Service ("cx.rybjcxbndService.exprotexcel"); var str = "<rwmc>" + rwmc + "</rwmc> <rwlb>" + rwlb + "</rwlb>"; var res = Service.Doservice (STR); var odoc = loadxml (res); if (service.getCode ()! = "2000") {showMessage ("Query falhou:"+service.getMessage ()); retornar; } var nodata = ODOC.SELECTSINGLENODE ("root/nodata"). Texto; if (nodata == "nodata") {showMessage ("sem dados!"); retornar; } // Obtenha informações de exportação var titleName = ODOC.SELECTSINGLENODE ("root/title_name"). Text; var filename = ODOC.SELECTSINGLENODE ("root/file_name"). text; var outputInfo = ODOC.SELECTSINGLENODE ("raiz/outputInfo"). Texto; var download_path = ODOC.SELECTSINGLENODE ("root/download_path"). text; if (outputInfo! = "") {showMessage (outputInfo); retornar; } if (Confirm ("Exportar com êxito! Confirmar o arquivo de download? /n Nome do arquivo é:"+nome do arquivo)) {var file = filename; var showfile = titleName + ".xls"; showfile = decodeuricomponent (showfile); var idx = document.url.indexof ("/ADP"); if (idx == -1) {alert ("O endereço do host não pode ser reconhecido:" + document.url); retornar; } var host = document.url.substring (0, idx); var width = screen.width; var em altura = screen.Height; depurador; // Abra a página de download var param = "barra de ferramentas = não, localização = não, status = sim, redimensionável = não, scrollbars = sim, top =" + altura + ", esquerda =" + width + ", largura = 100, altura = 100"; // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (isie6) {window.location.href = host + "/adp/work/gzkp/common/js/download_new.jsp?file=" + arquivo + "& showfile =" + showfile + "& download_path =" + download_path; } else {window.open (host + "/adp/work/gzkp/common/js/download_new.jsp?file=" + file + "& showfile =" + showfile + "& download_path =" + download_path, "_blank", param); }}}Categoria pública
pacote ctais.business.gzkp.common; importar java.io.file; importar java.io.fileInputStream; importar java.text.simpledEformat; importar java.util.date; import org.apache.poi2.hsf.Usodel.hsflcell; org.apache.poi2.hssf.usermodel.hssfrow; importar org.apache.poi2.hssf.usermodel.hssfsheet; importar org.apache.poi2.hssf.sermodel.hsfworkbook; import ctaiis.business.vashboard.Shashboard.Shashboard.Shashbons. CTAIIS.CONFIG.CONFIG; importar ctaiis.services.data.datawindow; importar ctaiis.services.xml.xmldataObject; importar ctaiis.Services.xml.xmlParser; import ctaiis.util.stringEx; importação; jxl.write.label; importar jxl.write.writableCellformat; importar jxl.write.writablefont; importar jxl.write.writableSlesheet; importar jxl.write.writableworkbook; 2004 </p> * <p> Empresa: dc </p> * @author fengzg * @version 1.0 * Tempo: 2015-12-28 */public class CreateExcel {private final Static String config_file_path = config.ctais_home; WWB WWB WWB = NULL; XmldataObject xdo = null; public CreateExcel () {} / ** * Gere Excel * @param sql Query sql * @param czrydm Código do operador * @param títulos de exportação Título da coluna * @param exltitle Excel Tabela Cabeçalho * @return * @throws Exception * / public stringToExcel (String string sql, Czrydr. HSSFWorkbook WB = new HSSFWorkbook (); Folha de hssfsheet = wb.createSheet (); ExportExcel exportExcel = new ExportExcel (WB, folha); Stringbuffer sffer = new StringBuffer (); // int colnum = 30; DataWindow dw = datawindow.dynamiccreate (sql.toString ()); dw.setConnectionName (icomm.gzkpjndi); long dwret = dw.retrieve (); if (dwret <= 0) {sffer.append ("<nodata> nodata </nodata>"); return sffer.toString (); } else {sffer.append ("<nodata> </nodata>"); } int colnum = dw.getColumnCount (); // Defina a largura da coluna para a coluna da planilha (altere na verdade o número de colunas por si mesmo) para (curto i = 0; i <= colnum; i ++) {sheet.setColumnWidth (i, (curto) 4000); } // Crie estilo de célula HSSFCellStyle CellheadStyle = wb.createCellStyle (); // Especifique o alinhamento do centro celular CellheadStyle.Setalignment (hsSfCellStyle.align_center); // Especifique o alinhamento do centro vertical da célula. // Especifique o embrulho de linha de células quando o conteúdo da célula não é exibido abaixo do CellheadStyle.SetWrapText (true); // Definir fontes de célula hssfffont headfont = wb.createFont (); headfont.setBoldweight (hssffont.Boldweight_bold); headfont.setFontName ("安一"); headfont.setFoTheight ((Short) 200); Cellheadstyle.setFont (Headfont); // Crie data de cabeçalho do relatório dt = new Date (); SimpledateFormat sdt = new SimpleDateFormat ("yyyymmddhhmmsss"); String sfm = czrydm + "_" + sdt.format (dt); // Defina o cabeçalho da coluna exportExcel.createnormalhead (exltitle, colnum-1); Hssfrow row1 = sheet.crerowroow (1); for (int i = 0; i <titles.length; i ++) {hssfcell célula = row1.createCell ((curto) i); Cell.setEncoding (hssfcell.encoding_utf_16); Cell.setCellStyle (Cellheadstyle); Cell.setCellValue (títulos [i]); } Valor do objeto = ""; // Defina o estilo de tabela HSSFCELLSTYLE CellStyle = wb.createCellStyle (); // Especifique o alinhamento do centro celular CellStyle.Setalignment (HSSFCellStyle.align_center); // Especifique a célula verticalmente o alinhamento CellStyle.setverticalAlignment (HSSFCellStyle.vertical_center); // Especifique o embrulho de linha celular quando o conteúdo da célula não puder ser exibido CellStyle.setWrapText (true); // Definir fontes de célula Hssfffont = wb.createFont (); font.setBoldweight (hssffont.ss_none); font.setFontName ("宋体"); font.setFoTheight ((Short) 200); CellStyle.setFont (Font); for (int i = 0; i <dw.getRowCount (); i ++) {hssfrow line = sheet.createrow (i+2); for (int j = 1; j <= dw.getColumnCount (); j ++) {hssfcell célula = row.createCell ((curto) (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 ()); }}} // Defina o caminho de exportação, observe aqui que, se for um sistema Linux que requer criação de caminho manual (se alguém estiver claro sobre o motivo aqui, por favor, dê -me alguns conselhos) cite o recém -criado caminho da string de string Path = "/Export/"; Arquivo de arquivo = novo arquivo (caminho); if (! file.exists ()) {file.mkdirs (); } String filename = sfm+". Xls"; // string pth = path.trim () + file.separator + nome do arquivo; String pth = path.trim () + nome do arquivo; 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>" " + fileName +" </file_name> "); sffer.append (" <outputinfo> " + outputInfo +" </outputInfo> "); return sffer.tostring ();} catch (exceção e) {e.printstack ();Código de fundo
/*** Função de exportação* @param xdo parâmetro de primeiro plano* @param czrydm Código do operador* @return generado xls Information* @throws Exceção Descrição*/public String exportExcel (xmldataObject args, string string rwmc) lança excepção {// recebe parâmetros de queda (string string string rwmc). String rwlb = stringEx.snull (args.getItemValue ("rwlb")); if (null! = rwmc &&! "". Equals (rwmc)) {sqlwhere.append ("e a.rwmc como '%"+rwmc+"%'"); } if (null! = rwlb &&! "". Equals (rwlb)) {sqlwhere.append ("e a.rwlb_dm = '"+rwlb+"')); } Stringbuilder sql = new stringbuilder (); // Consulta de emenda SQL SQL.APNEND ("SELECT RWXH, RWMC FROM RWXX") .APNEND (SQLwhere) .Append ("Order by Rwxh)") .Append (sqliswhere); // exportou título da coluna String [] títulos = {"Número de série da tarefa", "Nome da tarefa"}; // instancia a classe pública Createexcel Excel = new CreateExcel (); return Excel.NewtoExcel (sql.toString (), czrydm, títulos, "cabeçalho exlcel"); }O método acima para exportar o Excel (suporte ao IE Baixo) é todo o conteúdo que compartilhei com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.