最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java程序?qū)崿F(xiàn)導(dǎo)出Excel的方法(支持IE低版本)

 更新時間:2016年07月20日 11:18:32   投稿:jingxian  
下面小編就為大家?guī)硪黄狫ava程序?qū)崿F(xiàn)導(dǎo)出Excel的方法(支持IE低版本)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

導(dǎo)出需要三個部分,js,公共方法,后臺方法。

js代碼

function exportData()
{
    //前臺接收的參數(shù)
  rwmc = $("#txt_rwmc").val();
   rwlb = $("#com_rwlb").combobox("getValues").join(",");
   
  //調(diào)用后臺導(dǎo)出功能
  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("無數(shù)據(jù)!");
    return;
  }
  // 獲取導(dǎo)出信息
  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("導(dǎo)出成功!確認(rèn)下載文件嗎?\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下導(dǎo)出excel失敗問題,原因是ie6對window.open(url)支持度不好,
    // 當(dāng)瀏覽器為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: 轉(zhuǎn)換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 導(dǎo)出列標(biāo)題
     * @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();
        
        // 給工作表列定義列寬(實際應(yīng)用自己更改列數(shù))
        for (short i = 0; i <= colNum; i++) {
          sheet.setColumnWidth(i, (short) 4000);
        }
        // 創(chuàng)建單元格樣式
        HSSFCellStyle cellHeadStyle = wb.createCellStyle();
        // 指定單元格居中對齊
        cellHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        // 指定單元格垂直居中對齊
        cellHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        // 指定當(dāng)單元格內(nèi)容顯示不下時自動換行
        cellHeadStyle.setWrapText(true);
        // 設(shè)置單元格字體
        HSSFFont headFont = wb.createFont();
        headFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        headFont.setFontName("宋體");
        headFont.setFontHeight((short) 200);
        cellHeadStyle.setFont(headFont);
  
        // 創(chuàng)建報表頭部
        Date dt=new Date();
        SimpleDateFormat sdt=new SimpleDateFormat("yyyyMMddhhmmssS");
        String sfm = czryDm + "_" + sdt.format(dt);
        
        // 設(shè)置列頭
        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 = "";
        
        //設(shè)置表格樣式
        HSSFCellStyle cellStyle = wb.createCellStyle();
        // 指定單元格居中對齊
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        // 指定單元格垂直居中對齊
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        // 指定當(dāng)單元格內(nèi)容顯示不下時自動換行
        cellStyle.setWrapText(true);
        // 設(shè)置單元格字體
        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());
            }
          }
        }
        //設(shè)置導(dǎo)出路徑,此處需要注意如果是Linux系統(tǒng)需要手動建路徑,(此處的原因有人比較清楚的話還請指教)引用新建的文件路徑
        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());
      }
    }

}

后臺代碼

/**
   * 導(dǎo)出功能
   * @param xdo 前臺傳參
   * @param czryDm 操作人員代碼
   * @return 生成的XLS信息
   * @throws Exception 異常說明
   */
  public String exportExcel(XMLDataObject args,String czryDm) throws Exception 
  {
    //接收前臺傳遞的查詢參數(shù)
    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);
    //導(dǎo)出的列標(biāo)題
    String[] titles = {"任務(wù)序號","任務(wù)名稱"};

    //實例化公共類
    CreateExcel excel = new CreateExcel();
    return excel.newToExcel(sql.toString(), czryDm,titles,"Exlcel表頭");
  }

以上這篇Java程序?qū)崿F(xiàn)導(dǎo)出Excel的方法(支持IE低版本)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot系列教程之死信隊列詳解

    Spring Boot系列教程之死信隊列詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot系列教程之死信隊列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法

    Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法

    有時候因為新增的需求需要獲取剛剛新增的數(shù)據(jù)的自增的主鍵ID,下面這篇文章主要給大家介紹了關(guān)于Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java使用JSqlParser解析SQL語句應(yīng)用場景

    Java使用JSqlParser解析SQL語句應(yīng)用場景

    JSqlParser是一個功能全面的Java庫,用于解析SQL語句,支持多種SQL方言,它可以輕松集成到Java項目中,并提供靈活的操作方式,本文介紹Java使用JSqlParser解析SQL語句總結(jié),感興趣的朋友一起看看吧
    2024-09-09
  • Java+Redis撤銷重做功能實現(xiàn)

    Java+Redis撤銷重做功能實現(xiàn)

    這篇文章主要介紹了Java+Redis實現(xiàn)撤銷重做功能,需要考慮撤銷的最大步數(shù),撤銷之后穿插著其他操作則不能再重做,所以引入分布式鎖Redisson進行加鎖處理,防止對圖表的操作有并發(fā)請求導(dǎo)致處理撤銷邏輯混亂,感興趣的朋友跟隨小編一起看看吧
    2023-05-05
  • SpringBoot發(fā)送異步郵件流程與實現(xiàn)詳解

    SpringBoot發(fā)送異步郵件流程與實現(xiàn)詳解

    這篇文章主要介紹了SpringBoot發(fā)送異步郵件流程與實現(xiàn)詳解,Servlet階段郵件發(fā)送非常的復(fù)雜,如果現(xiàn)代化的Java開發(fā)是那個樣子該有多糟糕,現(xiàn)在SpringBoot中集成好了郵件發(fā)送的東西,而且操作十分簡單容易上手,需要的朋友可以參考下
    2024-01-01
  • IDEA JarEditor編輯jar包方式(直接新增,修改,刪除jar包內(nèi)的class文件)

    IDEA JarEditor編輯jar包方式(直接新增,修改,刪除jar包內(nèi)的class文件)

    文章主要介紹了如何使用IDEA的JarEditor插件直接修改jar包內(nèi)的class文件,而不需要手動解壓、反編譯和重新打包,通過該插件,可以更方便地進行jar包的修改和測試
    2025-01-01
  • Java實現(xiàn)簡單文字驗證碼以及人機驗證

    Java實現(xiàn)簡單文字驗證碼以及人機驗證

    人機驗證技術(shù)的發(fā)展也在不斷進化,從最初的簡單驗證碼到現(xiàn)在的人工智能驅(qū)動的高級驗證系統(tǒng),下面這篇文章主要介紹了Java實現(xiàn)簡單文字驗證碼以及人機驗證的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • 解決restlet client報錯No response.Is the certificate valid? Click here to check.

    解決restlet client報錯No response.Is the cer

    這篇文章主要介紹了解決restlet client報錯No response.Is the certificate valid? Click here to check.問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Mybatis-Plus?CRUD操作方法

    Mybatis-Plus?CRUD操作方法

    通用?Service?CRUD?封裝?IService?接口,進一步封裝?CRUD?采用?get?查詢、remove?刪除?、list?查詢集合、page?分頁的前綴命名方式區(qū)分?Mapper?層避免混淆,這篇文章主要介紹了Mybatis-Plus?CRUD的相關(guān)知識,需要的朋友可以參考下
    2023-10-10
  • Java內(nèi)存溢出和內(nèi)存泄露

    Java內(nèi)存溢出和內(nèi)存泄露

    這篇文章主要介紹了Java內(nèi)存溢出和內(nèi)存泄露的相關(guān)資料,需要的朋友可以參考下
    2017-10-10

最新評論

宜兰市| 新营市| 廉江市| 富裕县| 沾化县| 赣州市| 新干县| 南通市| 财经| 泸定县| 盐边县| 雅安市| 和平县| 渝北区| 梁河县| 黎平县| 甘洛县| 崇左市| 莲花县| 孟村| 青龙| 宜都市| 揭西县| 讷河市| 喜德县| 桐庐县| 剑河县| 太保市| 新宁县| 镇远县| 石河子市| 筠连县| 吉安县| 万山特区| 永吉县| 木里| 平阴县| 申扎县| 万山特区| 周口市| 东阿县|