• spring mvc + hibernate + spring + jsp 实现输入sql导出excel


    jsp层:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <%@ include file="/commons/head.jspf"%>
    <title>Insert title here</title>
    <style type="text/css">
    body, ul, li {
        margin: 0;
        padding: 0;
    }
    
    body {
        background-color: #e4e9f1;
        color: #002446;
        margin: 0;
    }
    
    input, select, textarea, th, td {
        font-size: 1em;
    }
    
    ol.tree {
        padding: 0 0 0 30px;
        width: 300px;
    }
    
    li {
        position: relative;
        margin-left: -15px;
        list-style: none;
    }
    
    li.file {
        margin-left: -18px !important;
    }
    
    li.file a {
        background: url(document.png) 0 0 no-repeat;
        color: #002446;
        padding-left: 21px;
        text-decoration: none;
        display: block;
    }
    
    li input {
        position: absolute;
        left: 0;
        margin-left: 0;
        opacity: 0;
        z-index: 2;
        cursor: pointer;
        height: 1em;
        width: 1em;
        top: 0;
    }
    
    input+ol {
        display: none;
    }
    
    input+ol>li {
        height: 0;
        overflow: hidden;
        margin-left: -14px !important;
        padding-left: 1px;
    }
    
    li label {
        cursor: pointer;
        display: block;
        padding-left: 17px;
        background: url(toggle-small-expand.png) no-repeat 0px 1px;
    }
    
    input:checked+ol {
        background: url(toggle-small.png) 44px 5px no-repeat;
        margin: -22px 0 0 -44px;
        padding: 27px 0 0 80px;
        height: auto;
        display: block;
    }
    
    input:checked+ol>li {
        height: auto;
    }
    
    #inputdemo:hover {
        box-shadow: 0 12px 16px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0
            rgba(0, 0, 0, 0.19);
    }
    </style>
    
    </head>
    <body>
        <div id="cc" class="easyui-layout" style=" 600px; height: 400px;"
            data-options="fit:true">
            <div data-options="region:'east',title:'导出功能选择',split:true"
                style=" 400px;">
                <ol class="tree">
                    <li><label for="folder1"
                        style="font-size: 15px; color: #555555">功能总览</label> <input
                        type="checkbox" id="folder1" checked="checked" />
                        <ol>
                            <li><label for="subfolder1"
                                style="font-size: 15px; color: #555555">实时数据</label> <input
                                type="checkbox" id="subfolder1" />
                                <ol>
                                    <li class="file"><a href=""></a></li>
                                    <li><label for="subsubfolder1"
                                        style="font-size: 15px; color: #555555">下级</label> <input
                                        type="checkbox" id="subsubfolder1" />
                                        <ol>
                                            <li class="file"><a
                                                href="${app}/hit/check/checkArchives.do"
                                                style="text-decoration: none; font-size: 12px;">数据检测平台</a></li>
                                            <li class="file"><a
                                                href="${app}/hit/check/resperinfo.do"
                                                style="text-decoration: none; font-size: 10px;"
                                                style="font-size: 20px; color: blue">档案信息管理</a></li>
                                        </ol></li>
                                </ol></li>
                        </ol>
                </ol>
            </div>
    <!--核心在下面,从页面输入sql-->
    <div data-options="region:'center',title:'SQL输入页面'" style="padding: 5px; background: #eee;"> <h1 style="text-align: center; color: gold; letter-spacing: 0; text-shadow: 0px 1px 0px #999, 0px 2px 0px #888, 0px 3px 0px #777, 0px 4px 0px #666, 0px 5px 0px #555, 0px 6px 0px #444, 0px 7px 0px #333, 0px 8px 7px #001135">数据检测平台</h1> <form action="" name="fm" style="text-align: center;"> <textarea id="sql" name="sql" placeholder="请输入查询sql,支持各种复杂sql查询,各种功能函数,覆盖所有表" value="" style=" 1000px; height: 500px; font-size: 20px; font-style: 楷体;"></textarea> <br /> <input id='inputdemo' type="button" value="数据导出" onclick="download()" style="background-color: #008CBA; border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px;" /> </form> </div> </div> <script type="text/javascript"> document.onkeyup = function(e){ if(e.keyCode === 13){ var form = fm.sql.value; var url = "${app}/hit/check/download_excel.do?sql=" + form; window.open(url); } } function download() { var form = fm.sql.value; var url = "${app}/hit/check/download_excel.do?sql=" + form; window.open(url); } </script> </html>

    controller层:

    package com.hitoo.dgmill.checkexception;
    
    import java.net.URLEncoder;
    
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.hitoo.dgmill.checkexception.service.CheckExceptionDateService;
    
    @Controller
    @RequestMapping("/hit/check")
    public class CheckExceptionDateController {
    	
    
    	
    	@Autowired
    	private CheckExceptionDateService checkService;
    	
    	@RequestMapping("/checkexception")
    	public String checkException(HttpServletRequest httpServletRequest) {
    		return "check/info/inputsql";
    	}
    	
    	
    	@RequestMapping(value = "/download_excel", method = RequestMethod.GET)
    	public @ResponseBody
        String down(HttpServletResponse response, @RequestParam String sql) {
            response.setContentType("application/binary;charset=UTF-8");
            try {
                ServletOutputStream outputStream = response.getOutputStream();            
                response.setHeader("Content-Disposition", "attachment;filename="
                        + URLEncoder.encode("测试excel" + ".xls", "UTF-8"));
                
                checkService.getAll(outputStream, sql);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "error";
        }
    	
    	
    	/**
    	 * 跳转到综合检测平台
    	 */
    	@RequestMapping("/checkArchives")
    	public String checkArchives() {
    		return "check/info/checkArchives";
    	}
    	
    	
    	/**
    	 * 跳转到综合检测平台
    	 */
    	@RequestMapping("/resperinfo")
    	public String resperinfo() {
    		return "check/info/resperinfo";
    	}
    	
    	
    	
    	
    	
    	
    
    }
    

     Service层:

    package com.hitoo.dgmill.checkexception.service;

    import javax.servlet.ServletOutputStream;

    public interface CheckExceptionDateService {

    public void getAll(ServletOutputStream outputStream,String sqlString) throws Exception;

    }

      Service实现层:

    package com.hitoo.dgmill.checkexception.service.impl;
    
    import java.io.IOException;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    import javax.servlet.ServletOutputStream;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.hitoo.dgmill.checkexception.dao.CheckExceptionDateDao;
    import com.hitoo.dgmill.checkexception.service.CheckExceptionDateService;
    
    @Service
    public class CheckExceptionDateServiceImpl implements CheckExceptionDateService {
    
    	@Autowired
    	private CheckExceptionDateDao checkDao;
    
    	public void getAll(ServletOutputStream outputStream, String sqlString) throws Exception {
    
    		// 第一步,创建一个workbook,对应一个Excel文件
    		HSSFWorkbook workbook = new HSSFWorkbook();
    
    		// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet;
    		HSSFSheet hssfSheet = workbook.createSheet("数据详情");
    
    		// 第三步,在sheet中添加表头第0行,注意老版本的poi对Excel的行数有限制short
    		HSSFRow row = hssfSheet.createRow(0);
    		HSSFRow row2 = hssfSheet.createRow(0);
    		// 第四步,创建单元格,并设置表头,设置表头居中
    		HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
    
    		// 居中样式
    		hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    
    		HSSFCell hssfCell = null;
    
    		List<Map<Object, Object>> list = checkDao.getAllInforMation(sqlString);
    
    		System.out.println(list);
    
    		//核心计算模块
    		for (int i = 0; i < list.size(); i++) {
    			row = hssfSheet.createRow(i + 1);
    			Map<Object, Object> mapList = list.get(i);
    			Iterator<Object> it = mapList.keySet().iterator();
    			Set set = new HashSet();
    			while (it.hasNext()) {
    				int j = 0, d = 0;
    				String str = (String) it.next();
    				if(set.add(str)) {
    					Iterator iterator = set.iterator();
    					while (iterator.hasNext()) {
    						String string = iterator.next().toString();
    						row2.createCell(d++).setCellValue(string);
    						if(null != mapList.get(string)) {
    							row.createCell(j++).setCellValue(mapList.get(string).toString());
    						}
    					}
    				}
    			}
    		
    
    		}
    
    		try {
    			workbook.write(outputStream);
    			outputStream.flush();
    			outputStream.close();
    
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    }
    

      DAO层:

    package com.hitoo.dgmill.checkexception.dao;
    
    
    
    import java.util.List;
    import java.util.Map;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.transform.Transformers;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import com.hitoo.frame.base.SQLEntity;
    
    @Component
    public class CheckExceptionDateDao {
    	
    	@Autowired
    	private SessionFactory sessionFactory;
    
    	protected Session getCurrentSession() {
    		Session session = sessionFactory.openSession();
    		return session;
    	}
    	
    	
    	@SuppressWarnings("unchecked")
    	public List<Map<Object, Object>> getAllInforMation(String sql) throws Exception {
    		SQLEntity sqlEntity = new SQLEntity();
    		sqlEntity.setSql(sql);
    		List<Map<Object, Object>> perInfos =  getCurrentSession().createSQLQuery(sqlEntity.getSql()).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
    		if(perInfos == null || perInfos.size() <= 0) {
    			return null;
    		}
    		if(getCurrentSession() != null || getCurrentSession().isConnected()) {
    			getCurrentSession().close();
    		}
    		return perInfos;
    	}
    	
    	
    	
    	
    	
    	
    
    }
    

      

  • 相关阅读:
    Git常用命令
    maven profile动态选择配置文件
    Nodejs的偏函数
    用CountDownLatch来同步java的多线程
    NodeJS的Promise的用法
    alluxio常用命令
    常见小代码
    Mongodb
    Mysql_常用语法
    PostgreSQL
  • 原文地址:https://www.cnblogs.com/xuehu666/p/12450994.html
Copyright © 2020-2023  润新知