วันนี้ฉันต้องการแยกแยะปัญหาที่ฉันพบเมื่อไม่นานมานี้
เนื่องจากข้อกำหนดของโครงการต้องทำหน้าที่ส่งออกเป็นส่วนหนึ่ง ฉันใช้การส่งออกของ บริษัท ในตอนแรก แต่มันก็แปลกที่บางโมดูลรายงานข้อผิดพลาด 500 เมื่อส่งออก ฉันพบว่าหลังจากลบบางฟิลด์มันกลับสู่ปกติ ในเวลานั้นเนื่องจากโครงการแน่นฉันลบบางส่วนชั่วคราว แต่มันไม่ใช่วิธีแก้ปัญหาระยะยาว ต่อมาฉันแก้ไขและจัดเรียงตามพื้นฐานดั้งเดิม การดำเนินการปัจจุบันยังคงมีเสถียรภาพ ฉันจะแบ่งปันกับคุณ
การส่งออกต้องใช้สามส่วน, JS, วิธีการสาธารณะและวิธีการพื้นหลัง
รหัส JS
ฟังก์ชั่น exportData () {// พารามิเตอร์ที่ได้รับจากเบื้องหน้า rwmc = $ ("#txt_rwmc"). val (); rwlb = $ ("#com_rwlb"). combobox ("getValues"). เข้าร่วม (","); // การเรียกฟังก์ชั่นการส่งออกพื้นหลัง 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 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) {การแจ้งเตือน ("ที่อยู่โฮสต์ไม่สามารถรับรู้ได้:" + document.url); กลับ; } var host = document.url.substring (0, idx); var width = screen.width; var height = screen.height; ดีบักเกอร์; // เปิดหน้าดาวน์โหลด var param = "toolbar = ไม่, ตำแหน่ง = ไม่, สถานะ = ใช่, resizable = no, scrollbars = ใช่, top =" + ความสูง + ", ซ้าย =" + width + ", ความกว้าง = 100, ความสูง = 100"; - (isie6) {window.location.href = โฮสต์ + "/adp/work/gzkp/common/js/download_new.jsp?file=" + ไฟล์ + "& showfile =" + showfile + "& download_path =" + ดาวน์โหลด _path; } else {window.open (โฮสต์ + "/adp/work/gzkp/common/js/download_new.jsp?file=" + ไฟล์ + "& showfile =" + showfile + "& download_path =" + download_path, "_blank", param); -หมวดหมู่สาธารณะ
แพ็คเกจ ctais.business.gzkp.common; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.text.simpledateFormat; นำเข้า java.util.date; นำเข้า org.apache.poi2.hsf.usermodel.hssfcell; org.apache.poi2.hssf.usermodel.hssfrow; นำเข้า org.apache.poi2.hssf.usermodel.hssfsheet; นำเข้า org.apache.poi2.hssf.usermodel.hssfworkbook; ctaiis.config.config; นำเข้า ctaiis.services.data.datawindow; นำเข้า ctaiis.services.xml.xmldataObject; นำเข้า ctaiis.services.xml.xmlparser; jxl.write.label; นำเข้า jxl.write.writablecellformat; นำเข้า jxl.write.writablefont; นำเข้า jxl.write.writableSheet; นำเข้า jxl.write.worbleworkbook;/** * <p> ชื่อ: สร้างไฟล์ Excel 2004 </p> * <p> บริษัท : DC </p> * @author fengzg * @version 1.0 * เวลา: 2015-12-28 */คลาสสาธารณะ createExcel {สตริงคงสุดท้ายส่วนตัว config_file_path = config.ctais_home; Writableworkbook wwb = null; xmldataObject xdo = null; public createExcel () {} / ** * สร้าง excel * @param sql query sql * @param czrydm รหัสตัวดำเนินการ * @param ชื่อเรื่องการส่งออกชื่อคอลัมน์ * @param exltitle excel table header * @return * @throws @throws {hssfworkbook wb = new hssfworkbook (); แผ่น hssfsheet = wb.createsheet (); ExportExcel ExportExcel = New ExportExcel (WB, แผ่น); 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 </odata>"); return sffer.toString (); } else {sffer.append ("<nodata> </nodata>"); } int colnum = dw.getColumnCount (); // กำหนดความกว้างของคอลัมน์สำหรับคอลัมน์เวิร์กชีท (เปลี่ยนจำนวนคอลัมน์ด้วยตัวเอง) สำหรับ (สั้น i = 0; i <= colnum; i ++) {sheet.setColumnWidth (i, (สั้น) 4000); } // สร้างรูปแบบเซลล์ hssfcellstyle cellheadstyle = wb.createCellstyle (); // ระบุการจัดตำแหน่งศูนย์เซลล์ Cellheadstyle.setAlignment (hssfcellstyle.align_center); // ระบุเซลล์ในแนวตั้งการจัดตำแหน่ง cellheadstyle.setverticalalignment (hssfcellstyle.vertical_center); // ระบุการห่อเส้นเซลล์เมื่อเนื้อหาของเซลล์ไม่ปรากฏด้านล่าง CellheadStyle.SetWrapText (จริง); // ตั้งค่าตัวอักษรเซลล์ hssffont headfont = wb.createfont (); headfont.setboldweight (hssffont.boldweight_bold); headfont.setFontName ("安一"); headfont.setfontheight ((สั้น) 200); cellheadstyle.setfont (headfont); // สร้างส่วนหัวของรายงานวันที่ dt = วันที่ใหม่ (); SimpledateFormat SDT = new SimpledateFormat ("yyyymmddhhmmsss"); สตริง sfm = czrydm + "_" + sdt.format (dt); // ตั้งค่าส่วนหัวคอลัมน์ ExportExcel.createnormalhead (exltitle, colnum-1); hssfrow row1 = sheet.createrow (1); สำหรับ (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.SetverticalAlignment (hssfcellstyle.vertical_center); // ระบุการห่อเส้นเซลล์เมื่อเนื้อหาเซลล์ไม่สามารถแสดง cellStyle.SetWrapText (จริง); // ตั้งค่าตัวอักษรเซลล์ HSSFFONT FONT = WB.CreateFont (); font.setboldweight (hssffont.ss_none); font.setFontName ("宋体"); font.setfontheight ((สั้น) 200); CellStyle.SetFont (แบบอักษร); สำหรับ (int i = 0; i <dw.getRowCount (); i ++) {hssfrow row = sheet.createrow (i+2); สำหรับ (int j = 1; j <= dw.getColumnCount (); j ++) {hssfcell cell = row.createCell ((สั้น) (j-1)); cell.setencoding (hssfcell.encoding_utf_16); cell.setCellStyle (CellStyle); ค่า = dw.getItemany (i, j-1); if (value == null) {cell.setCellValue (""); } else {cell.setCellValue (value.toString ()); }}} // ตั้งค่าเส้นทางการส่งออกโปรดทราบที่นี่ว่าหากเป็นระบบ Linux ที่ต้องใช้การสร้างเส้นทางด้วยตนเอง (หากมีคนชัดเจนเกี่ยวกับเหตุผลที่นี่โปรดให้คำแนะนำแก่ฉัน) อ้างถึงเส้นทางสตริงพา ธ ไฟล์ที่สร้างขึ้นใหม่ = "/export/"; ไฟล์ไฟล์ = ไฟล์ใหม่ (พา ธ ); if (! file.exists ()) {file.mkdirs (); } string filename = sfm+". xls"; // string pth = path.trim () + file.Sparator + ชื่อไฟล์; String pth = path.trim () + ชื่อไฟล์; pth = pth.trim (); string outputInfo = exportExcel.outputexcel (PTH); sffer.append ("<title_name>" + sfm + "</title_name>"); sffer.append ("<lowwlowing_path>" + path + "</download_path>"); sffer.Append ("<file_name>" " + filename +" </file_name> "); sffer.append (" <outputInfo> " + outputInfo +" </outputInfo> "รหัสพื้นหลัง
/*** ฟังก์ชั่นการส่งออก* @param xdo พารามิเตอร์เบื้องหน้า* @param czrydm รหัสตัวดำเนินการ* @@return ข้อมูล XLS ที่สร้างขึ้น* @Throws ข้อยกเว้นคำอธิบาย*/การส่งออกสตริงสาธารณะ (XmldataObject args, String czrydm) StringEx.snull (args.getItemValue ("rwmc")); String rwlb = stringex.snull (args.getItemValue ("rwlb")); if (null! = rwmc &&! "". equals (rwmc)) {sqlwhere.append ("และ a.rwmc เช่น '%"+rwmc+"%'"); } if (null! = rwlb &&! "". equals (rwlb)) {sqlwhere.append ("และ a.rwlb_dm = '"+rwlb+"'"); } stringBuilder sql = new StringBuilder (); // splicing query sql sql.append ("เลือก rwxh, rwmc จาก rwxx") .append (sqlwhere) .append ("สั่งซื้อโดย rwxh)") .append (sqliswhere); // สตริงชื่อคอลัมน์ที่ส่งออก [] ชื่อ = {"หมายเลขซีเรียลงาน", "ชื่องาน"}; // ยกตัวอย่างคลาสสาธารณะ createExcel excel = new createExcel (); return excel.newtoexcel (sql.toString (), czrydm, ชื่อ, "exlcel header"); -วิธีการข้างต้นในการส่งออก Excel (สนับสนุน IE Low Version) คือเนื้อหาทั้งหมดที่ฉันได้แชร์กับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น