国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java程序實現導出Excel的方法(支持IE低版本)

2019-11-26 14:03:06
字體:
來源:轉載
供稿:網友

今天想整理一下自己前段時間遇到的一個導出的問題。

因為項目的需求,要做一部分導出功能。開始的時候用的公司的導出,但是很奇怪有部分模塊導出的時候就是會報500錯誤,發現在刪減一些字段后就恢復了正常,當時因為項目緊張,也就臨時刪減了一些,但也不是長久之計,之后自己在原本的基礎上重新修改整理了一下,目前運行還算穩定,就此和大家分享一下。

導出需要三個部分,js,公共方法,后臺方法。

js代碼

function exportData(){    //前臺接收的參數  rwmc = $("#txt_rwmc").val();   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("查詢失敗:"+service.getMessage());    return;  }  var nodata = oDoc.selectSingleNode("ROOT/NODATA").text;  if (nodata == "nodata") {    showMessage("無數據!");    return;  }  // 獲取導出信息  var titleName = oDoc.selectSingleNode("ROOT/TITLE_NAME").text;  var fileName = oDoc.selectSingleNode("ROOT/FILE_NAME").text;  var outPutInfo = oDoc.selectSingleNode("ROOT/OUTPUTINFO").text;  var download_path = oDoc.selectSingleNode("ROOT/DOWNLOAD_PATH").text;  if (outPutInfo != "") {    showMessage(outPutInfo);    return;  }  if (confirm("導出成功!確認下載文件嗎?/n文件名稱為:"+fileName)) {    var file = fileName;    var showfile = titleName + ".xls";    showfile = decodeURIComponent(showfile);    var idx = document.URL.indexOf("/adp");    if (idx == -1) {      alert("無法識別主機地址:" + document.URL);      return;    }    var host = document.URL.substring(0, idx);    var width = screen.width;    var height = screen.height;    debugger;    // 打開下載頁面    var param = "toolbar=no,location=no,status=yes,resizable=no,scrollbars=yes,top=" + height + ",left=" + width + ",width=100,height=100";    // ----------------------------------------------------------    // 此代碼塊為解決ie6下導出excel失敗問題,原因是ie6對window.open(url)支持度不好,    // 當瀏覽器為ie6時改用window.location.href    var isIE=!!window.ActiveXObject;    var isIE6=isIE&&!window.XMLHttpRequest;    if (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);    }  }}

公共類

package 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.HSSFCellStyle;import org.apache.poi2.hssf.usermodel.HSSFFont;import org.apache.poi2.hssf.usermodel.HSSFRow;import org.apache.poi2.hssf.usermodel.HSSFSheet;import org.apache.poi2.hssf.usermodel.HSSFWorkbook;import ctais.business.dashboard.service.ExportExcel;import ctais.config.Config;import ctais.services.data.DataWindow;import ctais.services.xml.XMLDataObject;import ctais.services.xml.XMLParser;import ctais.util.StringEx;import jxl.Workbook;import jxl.format.Alignment;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;/** * <p>Title: 生成EXCEL文件</p> * <p>Description: 轉換String字符串為EXCEL文檔</p> * <p>Copyright: Copyright (c) 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 查詢SQL     * @param czryDm 操作人員代碼     * @param titles 導出列標題     * @param exlTitle excel表頭     * @return     * @throws Exception     */    public String newToExcel(String sql,String czryDm,String[] titles,String exlTitle) throws Exception    {      try {        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();                // 給工作表列定義列寬(實際應用自己更改列數)        for (short i = 0; i <= colNum; i++) {          sheet.setColumnWidth(i, (short) 4000);        }        // 創建單元格樣式        HSSFCellStyle cellHeadStyle = wb.createCellStyle();        // 指定單元格居中對齊        cellHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);        // 指定單元格垂直居中對齊        cellHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        // 指定當單元格內容顯示不下時自動換行        cellHeadStyle.setWrapText(true);        // 設置單元格字體        HSSFFont headFont = wb.createFont();        headFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);        headFont.setFontName("宋體");        headFont.setFontHeight((short) 200);        cellHeadStyle.setFont(headFont);          // 創建報表頭部        Date 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 value = "";                //設置表格樣式        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系統需要手動建路徑,(此處的原因有人比較清楚的話還請指教)引用新建的文件路徑        String path = "/export/";        File file = new File(path);        if(!file.exists()) {          file.mkdirs();        }          String fileName = sfm+".xls";          //String pth = path.trim() + File.separator + fileName;        String 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();        throw new Exception(e.getMessage());      }    }}

后臺代碼

/**   * 導出功能   * @param xdo 前臺傳參   * @param czryDm 操作人員代碼   * @return 生成的XLS信息   * @throws Exception 異常說明   */  public String exportExcel(XMLDataObject args,String czryDm) throws Exception   {    //接收前臺傳遞的查詢參數    String rwmc = StringEx.sNull(args.getItemValue("RWMC"));       String rwlb = StringEx.sNull(args.getItemValue("RWLB"));        if(null != rwmc && !"".equals(rwmc))    {      sqlWhere.append(" AND A.RWMC LIKE '%"+rwmc+"%' ");    }    if(null != rwlb && !"".equals(rwlb))    {      sqlWhere.append(" AND A.RWLB_DM = '"+rwlb+"' ");    }        StringBuilder sql = new StringBuilder();    //拼接查詢SQL    sql.append("SELECT RWXH,RWMC FROM RWXX")      .append(sqlWhere).append(" ORDER BY RWXH ) ").append(sqlisWhere);    //導出的列標題    String[] titles = {"任務序號","任務名稱"};    //實例化公共類    CreateExcel excel = new CreateExcel();    return excel.newToExcel(sql.toString(), czryDm,titles,"Exlcel表頭");  }

以上這篇Java程序實現導出Excel的方法(支持IE低版本)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静宁县| 灵石县| 维西| 油尖旺区| 岗巴县| 泸溪县| 遂平县| 江阴市| 油尖旺区| 西盟| 杨浦区| 浦北县| 陇南市| 三门县| 勐海县| 西丰县| 昆明市| 高邮市| 香港 | 理塘县| 渭源县| 南充市| 弥渡县| 巴东县| 尚义县| 毕节市| 芜湖县| 韶关市| 临泉县| 临夏县| 高台县| 柳河县| 松溪县| 永嘉县| 镇平县| 克什克腾旗| 邢台县| 平果县| 景洪市| 阿坝县| 五原县|