오늘 저는 얼마 전에 발생했던 문제를 정리하고 싶습니다.
프로젝트의 요구 사항으로 인해 수출 기능의 일부를 수행해야합니다. 처음에는 회사의 수출을 사용했지만 일부 모듈이 수출 할 때 500의 오류를보고 한 것은 이상했습니다. 일부 필드를 삭제 한 후 정상으로 돌아 왔습니다. 당시 프로젝트가 빡빡했기 때문에 일시적으로 일부 삭제했지만 장기적인 솔루션은 아니 었습니다. 나중에, 나는 원래의 기준으로 수정하고 정리했습니다. 현재 작동은 여전히 안정적입니다. 나는 그것을 당신과 공유 할 것입니다.
내보내기에는 JS, 공개 방법 및 배경 방법의 세 부분이 필요합니다.
JS 코드
함수 ExportData () {// 전경 RWMC = $ ( "#txt_rwmc"). val (); rwlb = $ ( "#com_rwlb"). combobox ( "getValues"). join ( ","); // 배경 내보내기 기능 var 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 ( "쿼리 실패 :"+service.getMessage ()); 반품; } var nodata = odoc.selectsingLenode ( "root/nodata"). 텍스트; if (nodata == "nodata") {showmessage ( "데이터 없음!"); 반품; } // 내보내기 정보 가져 오기 var var titlename = odoc.selectsingLenode ( "root/title_name"). 텍스트; var filename = odoc.selectsingLenode ( "root/file_name"). 텍스트; var outputinfo = odoc.selectsingLenode ( "root/outputinfo"). 텍스트; var download_path = odoc.selectsingLenode ( "root/download_path"). 텍스트; if (outputInfo! = "") {showMessage (outputInfo); 반품; } if (확인 ( "성공적으로 내보내기! 다운로드 파일 확인? /n 파일 이름은 다음과 같습니다."{var file = filename; var showfile = titlename + ".xls"; showfile = decodeUricomponent (showfile); var idx = document.url.indexof ( "/adp"); if (idx == -1) {alert ( "호스트 주소를 인식 할 수 없습니다 :" + document.url); 반품; } var host = document.url.substring (0, idx); var width = screen.width; var height = screen.height; 디버거; // 다운로드 페이지 var var param = "도구 모음 = 아니오, 위치 = 아니오, 상태 = 예, Resizable = no, scrollbars = yes, top =" + height + ", 왼쪽 =" + width + ", width = 100, height = 100"; // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (isie6) {wind } else {wind }}}공개 카테고리
패키지 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; 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.exportexcelecceleccelecceleccelepceleccelepcelecceleccelepceleccel.service.usermodel.hssfworkbook; 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; jxl.alignment; jxl.write.label; import jxl.write.writablecellformat; import jxl.write.writablefont; import jxl.write.writableSheet; import jxl.write.writableworkbook;/** <p> 제목 : Excel 파일 </p> * <p> 설명 : string 문자열 (copyright : copyright : copyright : copyright : copyright) 2004 </p> * <p> 회사 : DC </p> * @author fengzg * @version 1.0 * 시간 : 2015-12-28 */public classeexcel {개인 최종 정적 문자열 config_file_path = config.ctais_home; WritableWorkbook wwb = null; xmldataobject xdo = null; public createexcel () {} / ** * excel 생성 * @param sql query sql * @param czrydm 운영자 코드 * @param 제목 내보내기 열 제목 * @param exltitle 엑셀 테이블 헤더 * @return * @throws 예외 * / public sql, strows ontrow [] title, string, string, string, string). {hssfworkbook wb = 새로운 hssfworkbook (); hssfsheet sheet = wb.createsheet (); ExportExcel ExportExcel = 새로운 ExportExcel (WB, 시트); StringBuffer sffer = new StringBuffer (); // int colnum = 30; Datawindow dw = datawindow.dynamiccreate (sql.tostring ()); dw.setConnectionName (icomp.gzkpjndi); long dwret = dw.retrieve (); if (dwret <= 0) {sffer.append ( "<nodata> nodata </nodata>"); 반환 sffer.toString (); } else {sffer.append ( "<nodata> </nodata>"); } int colnum = dw.getColumnCount (); // 워크 시트 열의 열 너비를 정의합니다 (실제로 열의 수를 직접 변경) (짧은 i = 0; i <= colnum; i ++) {sheet.setColumnWidth (i, (short) 4000); } // 셀 스타일 만들기 hssfcellstyle cellheadStyle = wb.createCellStyle (); // 셀 센터 정렬 지정 CellheadStyle.setalignment (hssfcellstyle.align_center); // 세포 수직 중심 정렬을 지정하십시오. CellheadStyle.setVerticalAlignment (hssfcellstyle.vertical_center); // 셀 라인 랩핑을 지정하여 셀 내용이 표시되지 않으면 cellheadheadStyle.setWrapText (true); // 셀 글꼴 설정 hssffont headfont = wb.createfont (); Headfont.setboldweight (hssffont.boldweight_bold); headfont.setfontname ( "安一"); Headfont.setfontheight ((짧은) 200); CellheadStyle.setfont (Headfont); // 보고서 제작 헤더 날짜 dt = 새 날짜 (); simpledateformat sdt = new simpledateformat ( "yyyymmddhhmmss"); 문자열 sfm = czrydm + "_" + sdt.format (dt); // 열 헤더 설정 Exportexcel.Createnormalhead (Exltitle, Colnum-1); hssfrow row1 = sheet.createrow (1); for (int i = 0; i <titles.length; i ++) {hssfcell cell = row1.createcell ((짧은) i); cell.setencoding (hssfcell.encoding_utf_16); Cell.setCellStyle (CellheadStyle); cell.setCellValue (제목 [i]); } 객체 값 = ""; // 테이블 스타일 설정 hssfcellstyle cellstyle = wb.createcellstyle (); // 셀 센터 정렬 지정 CellStyle.setalignment (hssfcellstyle.align_center); // 세포 수직 중심 정렬 정렬 셀 스타일을 지정합니다. // 셀 내용을 표시 할 수없는 경우 셀 라인 랩핑을 지정하십시오. CellStyle.setWrapText (true); // 셀 글꼴 설정 hssffont font = wb.createFont (); font.setboldweight (hssffont.ss_none); font.setfontname ( "宋体"); font.setfontheight ((짧은) 200); Cellstyle.setfont (글꼴); 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 ((short) (j-1)); cell.setencoding (hssfcell.encoding_utf_16); Cell.setCellStyle (CellStyle); value = dw.getitemany (i, j-1); if (value == null) {cell.setCellValue ( ""); } else {cell.setCellValue (value.toString ()); }}} // 내보내기 경로를 설정하십시오. 여기에서 수동 경로 생성이 필요한 Linux 시스템 인 경우 (누군가가 여기에 이유에 대해 명확한 경우, 나에게 조언을 해주세요) 새로 생성 된 파일 경로 String Path = "/Export/"; 파일 = 새 파일 (Path); if (! file.exists ()) {file.mkdirs (); } 문자열 filename = sfm+". xls"; // String pth = path.trim () + file.separator + filename; 문자열 pth = path.trim () + filename; pth = pth.trim (); 문자열 outputInfo = ExportExcel.outPutexcel (pth); sffer.append ( "<title_name>" + sfm + "</title_name>"); sffer.Append ( "<다운로드 _Path>" + path + "</download_path>"); sffer.append ( "<file_name>" " + filename +"</file_name> "); sffer.append ("<outputinfo> " + outputinfo +"</outputinfo> "); return sffer.tostring ();} catch (e.printstacktrace ());배경 코드
/*** 내보내기 기능* @Param XDO 포 그라운드 매개 변수* @Param CzryDM 운영자 코드* @return XLS 정보 생성 XLS 정보* @Throws 예외 설명*/public String ExportExcel (xmlDataObject Args, String CzryDM) 예외 {// query 매개 변수 rwmc =에 의해 전달됩니다. StringEx.snull (Args.getItemValue ( "rwmc")); 문자열 rwlb = stringex.snull (args.getItemValue ( "rwlb")); if (null! = rwmc &&! "". } if (ull! = rwlb &&! "". } StringBuilder sql = new StringBuilder (); // 스 플라이 싱 쿼리 sql sql.append ( "rwxh, rwmc를 rwxx") .append (sqlwhere) .append ( "주문)") .append (sqliswhere); // 내보내는 열 제목 문자열 [] titles = { "작업 일련 번호", "작업 이름"}; // public class createexcel excel = new Createexcel ()을 인스턴스화합니다. return Excel.newtoExcel (sql.tostring (), czrydm, 제목, "exlcel header"); }Excel을 내보내는 위의 방법 (IE 낮은 버전 지원)은 내가 공유 한 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.