今日は、少し前に遭遇した問題を整理したいと思います。
プロジェクトの要件のため、エクスポート機能の一部を実行する必要があります。私は最初に会社の輸出を使用しましたが、一部のモジュールが輸出時に500のエラーを報告したことは奇妙でした。いくつかのフィールドを削除した後、それは通常に戻ったことがわかりました。当時、プロジェクトはタイトだったため、一時的に削除しましたが、長期的な解決策ではありませんでした。その後、私はそれを元のベースで修正して整理しました。現在の操作はまだ安定しています。私はあなたとそれを共有します。
エクスポートには、JS、パブリックメソッド、および背景方法の3つの部分が必要です。
JSコード
function exportdata(){//前景rwmc = $( "#txt_rwmc")。 rwlb = $( "#com_rwlb")。combobox( "getValues")。join( "、"); //バックグラウンドエクスポート機能の呼び出し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 failed:"+service.getMessage());戻る; } var nodata = odoc.selectsinglenode( "root/nodata")。テキスト; if(nodata == "nodata"){showmessage( "no data!");戻る; } // Export情報var titlename = odoc.selectsinglenode( "root/title_name")。テキスト; var filename = odoc.selectsinglenode( "root/file_name")。text; var outputinfo = odoc.selectsinglenode( "root/outputinfo")。テキスト; var download_path = odoc.selectsinglenode( "root/download_path")。テキスト; if(outputinfo!= ""){showmessage(outputinfo);戻る; } if(confism( "エクスポートに正常に!ダウンロードファイルを確認しますか? 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 param = "toolbar = no、location = no、status = yes、resizable = no、scrollbars = yes、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 =" + download_path; } else {window.open(host + "/adp/work/gzkp/common/js/download_new.jsp?file=" + file + "&showfile =" + showfile + "&download_path =" + download_path、 "_blank"、param); }}}公開カテゴリ
パッケージ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.hsfcell; Import; apache.poi2.hssf.usermodel.hssfrow; Import org.apache.poi2.hssf.usermodel.hssfsheet; import org.apache.poi2.hssf.usermodel.hssfworkbook; Import ctaiis.byness.byness.byness.board.service ctaiis.config.config; Import ctaiis.services.data.datawindow; Import ctaiis.services.xml.xmldataobject; import ctaiis.services.xml.xmlparser; Import ctaiis.util.stringex; jxl.work.workbook jxl.write.label; Import jxl.write.writablecellformat;インポートjxl.write.writablefont; import jxl.write.writablesheet; import jxl.write.writableworkbook;/** * <p>タイトル:Excelファイル</p> * <p <p> cplight:excel string to excel string </p> copt </p> copt </p> <p> 2004 </p> * <p> company:dc </p> * @author fengzg * @version 1.0 *時間:2015-12-28 */public class createexcel {private final static string 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例外 * /パブリックストリングnewtoexcel(string spring spring、string squtls hssfworkbook wb = new hssfworkbook(); hssfsheet sheet = wb.createsheet(); Exportexcel exportexcel = new Exportexcel(WB、Sheet); 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(); //ワークシート列の列幅を定義します(実際には自分で列の数を変更します)(short i = 0; i <= colnum; i ++){sheet.setColumnWidth(i、(short)4000); } //セルスタイルの作成//セルセンターアライメントCellHeadstyle.SetAlignment(hssfcellstyle.align_center)を指定します。 //セルを指定します垂直中心アライメントセルヘッドスタイル。SetvertAlignment(hssfcellstyle.vertical_center); //セルの含有量がCellheadstyle.setWraptext(true)の下に表示されないときにセル株ラッピングを指定します。 //セルフォントの設定hssffont headfont = wb.createfont(); headfont.setboldweight(hssffont.boldweight_bold); headfont.setFontName( "安一"); headfont.setfontheight((short)200); cellheadstyle.setfont(headfont); //レポートヘッダー日付dt = new date(); SimpleDateFormat sdt = new simpledateFormat( "yyyymmddhhmmsss"); string 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((short)i); cell.SetEncoding(hssfcell.encoding_utf_16); Cell.setCellStyle(CellHeadstyle); cell.setCellValue(TITLES [i]); } object値= ""; //テーブルスタイルを設定するhssfcellstyle cellStyle = wb.createcellstyle(); //セルセンターアライメントCellStyle.SetAlignment(hssfcellstyle.align_center)を指定します。 //セルを指定します垂直中心アライメントCellStyle.setverticalAlignment(hssfcellstyle.vertical_center); //セルの含有量を表示できないときにセル株ラッピングを指定します。CellStyle.setWraptext(true); //セルフォントの設定hssffont font = wb.createfont(); font.setboldweight(hssffont.ss_none); font.setFontName( "宋体"); font.setfontheight((short)200); CellStyle.setFont(font); 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システムである場合(ここで理由が明確な場合は、アドバイスをください)、新しく作成されたファイルパス文字列パス= "/export/"を引用してください。 file file = new file(path); if(!file.exists()){file.mkdirs(); }文字列filename = sfm+"。xls"; // string pth = path.trim() + file.separator + filename;文字列pth = path.trim() + filename; 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(Exception E){e.printstacktrace(); shop背景コード
/***エクスポート関数* @Param XDO Foreground Parameter* @Param CZRYDMオペレーターコード* @return生成XLS情報* @Throws例外説明*/public String Exportexcel(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 like '%"+rwmc+"%'"); } if(null!= rwlb &&! ""。equals(rwlb)){sqlwhere.append( "and a.rwlb_dm = '"+rwlb+"'"); } stringbuilder sql = new StringBuilder(); //クエリsql sql.append( "rwxh、rwmc from rwxx").append(sql where).append( "order by rwxh)").append(sqliswhere); //エクスポートされた列タイトル文字列[] title = {"タスクシリアル番号"、 "タスク名"}; //パブリッククラスのcreateexcel excel = new createexcel(); return excel.newtoexcel(sql.tostring()、czrydm、 "exlcelヘッダー"); }Excelをエクスポートする上記の方法(IE低バージョンをサポート)は、私があなたと共有したすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。