?? exportreportieservlet.java
字號:
package com.glf.reportIE.servlet;
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.glf.reportIE.commons.*;
import com.glf.reportIE.dao.*;
public class ExportReportIEServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
//PrintWriter out = response.getWriter();
//HttpSession session=request.getSession();
String screen=request.getServletPath();
if(screen.equals("/pages/reportIE/exportExcel")){
String errorMessage = "";
String forwardPage = "exportExcel.jsp";
try{
String formName = request.getParameter("formName");
String searchCondition = request.getParameter("searchCondition");
//下面是存放xml文件的位置
String xmlPath = request.getRealPath("")+"/pages/reportIE/xml/"+formName+".xml";
//下面存放excel模板文件的路徑
String source = request.getRealPath("")+"/pages/reportIE/model/"+formName+".xls";
//下面是存放填充數據后excel的文件路徑
String newPath = request.getRealPath("")+"/pages/reportIE/excel/["+searchCondition+"]"+formName+".xls";
//根據xml文件取出該報表所綁定的類名和方法名
String className = XmlUtils.getOtherAttributeValue(xmlPath,"bindClass","formName",formName,"className");
String methodName = XmlUtils.getOtherAttributeValue(xmlPath,"bindClass","formName",formName,"methodName");
//方法返回的一個HashMap(包含所有用戶信息)
Class clzz = Class.forName(className);//裝載類
Object obj = clzz.newInstance();//實例化
Class argClass = Class.forName("java.lang.String");//裝載要調用的方法參數
Method sm = clzz.getMethod(methodName, argClass);//裝載方法名和參數類型
Object[] args = new Object[1];
args[0] = new String(searchCondition);//設定參數值
HashMap archivesInfoMap = (HashMap)sm.invoke(obj, args[0]);
//System.out.println(rval);
// Class clzz = Class.forName("com.glf.reportIE.dao.ArchivesInfoDBOperate"); //裝載類
// Object obj = clzz.newInstance(); //實例化
// Class[] argsClass = new Class[1];
// argsClass[0] = Class.forName("java.lang.String"); //裝載要調用的方法參數
//
// Method sm = clzz.getMethod("setRealname", argsClass); //裝載方法名和參數類型
// Object[] args = new Object[1]; //設定參數值
// args[0] = new String("tombo");
// String rval = sm.invoke(obj, args).toString(); //調用方法
//
// Method gm = clzz.getMethod("getRealname", null); //裝載方法名(無參型)
// String rval = gm.invoke(obj, null).toString(); //調用方法并接收返回值
// System.out.println(rval);
//ArchivesInfoDBOperate _archivesDao = new ArchivesInfoDBOperate();
//HashMap archivesInfoMap = _archivesDao.getArchivesInfo(searchCondition);
//按place,description,field順序取出所有
boolean xmlflag = XmlUtils.fileIsExits(xmlPath);
ArrayList cellList = new ArrayList();//【報表綁定類和方法后所有相關值的集合】
ArrayList cellValueList = new ArrayList();//【列、行、單元格的值】的集合
if(xmlflag){
cellList = XmlUtils.getAllCellValue(xmlPath);
cellValueList = new ArrayList();
for(int i=0;i<cellList.size();i++){
String place = cellList.get(i).toString();
if(ExcelColumnMap.isCharacter(place.substring(1, 2))){
cellValueList.add(ExcelColumnMap.getColumnNumber(place.substring(0, 2)));
cellValueList.add(place.substring(2, place.length()));
cellValueList.add(archivesInfoMap.get(cellList.get(i+2)));
}else{
cellValueList.add(ExcelColumnMap.getColumnNumber(place.substring(0, 1)));
cellValueList.add(place.substring(1, place.length()));
cellValueList.add(archivesInfoMap.get(cellList.get(i+2)));
}
i+=2;
}
}
//out.print(cellValueList);
//導出填充好數據的excel表
boolean modelflag = XmlUtils.fileIsExits(source);
//System.out.print(xmlflag);
if(xmlflag){
if(modelflag){
if(archivesInfoMap.isEmpty()){
errorMessage = "您輸入查詢條件并不存在,不能生成excel報表!";
request.setAttribute("errorMessage", errorMessage);
request.getRequestDispatcher(forwardPage).forward(request,response);
}else{
UploadDownloadUtils _uploadDao = new UploadDownloadUtils();
ReadExcelModelUtils _readExcelDao = new ReadExcelModelUtils();
_readExcelDao.exportExcelWithData(source, newPath, cellValueList);
_uploadDao.downLoad(newPath, response, false);
}
}else{
errorMessage = "您選擇的報表模板并沒有導入,不能生成excel報表!";
request.setAttribute("errorMessage", errorMessage);
request.getRequestDispatcher(forwardPage).forward(request,response);
}
}else{
errorMessage = "您選擇的報表模板還沒有【設置字段位置】,不能生成excel報表!";
request.setAttribute("errorMessage", errorMessage);
request.getRequestDispatcher(forwardPage).forward(request,response);
}
}catch(Exception e){
errorMessage = "您選擇的報表綁定的類或方法錯誤,不能生成excel報表,請仔細檢查后再導出!";
request.setAttribute("errorMessage", errorMessage);
request.getRequestDispatcher(forwardPage).forward(request,response);
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request,response);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -