一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java程序實現導出Excel的方法(支持IE低版本)

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

2020-05-29 14:34jingxian JAVA教程

下面小編就為大家帶來一篇Java程序實現導出Excel的方法(支持IE低版本)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

js代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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);
    }
  }
}

公共類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
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());
      }
    }
 
}

后臺代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
   * 導出功能
   * @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低版本)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜小福利 | 99视频久久精品久久 | 日韩中文字幕在线不卡 | 亚洲福利一区二区精品秒拍 | 免费91麻豆精品国产自产在线观看 | 精品国产美女福利在线 | 久久精品国产清白在天天线 | 青草精品 | 亚洲成a人不卡在线观看 | 欧美一区二区三区精品国产 | 免费国产成人高清视频网站 | 91久久精品青青草原伊人 | 国语自产自拍秒拍在线视频 | 四虎影视884aa·com| 色综合91久久精品中文字幕 | 东方影库四虎 | 欧美一区精品二区三区 | 亚洲国产中文字幕在线视频综合 | 日产欧产va高清 | 和两个男人玩3p好爽视频 | 欧美日韩精品一区二区三区视频播放 | 无码国产成人777爽死在线观看 | 日本大巴车强thepro | kayden kross喷水| 婚前试爱全集免费观看 | 精品国产福利一区二区在线 | 久久免费资源福利资源站 | 亚洲一区二区三区不卡在线播放 | 丰满的闺蜜2中文字幕 | 国产一区二区在线观看美女 | jiizz亚洲护士厕所 | 亚洲欧美日韩一区成人 | 国产一卡二卡四卡免费 | 国产成人免费在线视频 | 3d欧美人禽交 | xxx95日本老师xxx学生 | freesex性欧美炮机喷潮 | 四虎最新永久免费视频 | 国产精品成人一区二区 | 色综合久久中文字幕综合网 | 深夜免费看 |