欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

easyUI 滚动条 Poi导出报表 导报表EasyUI滚动条poi

程序员文章站 2022-07-09 07:53:35
...

ExportExcel.java类

package com.pro.lottery.action;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

import com.pro.lottery.dao.DataSourceFactory;
import com.pro.lottery.modle.ReqLottery;

/**
 * 
 * @author Caixu
 *
 */
public class ExportExcel extends BaseAction {
	/**
	 * 
	 */
	private static final long serialVersionUID = -3297347144890990614L;
	public static double totalCount = 0;	//总共有多少条数据
	public static double execCount = 0;		//已经处理的数据
	/** 
     * 对list数据源将其里面的数据导入到excel表单 
     *  
     * @param fieldName 	
     *            [] 导出到excel文件里的表头名 
     * @param columnIt 
     *            [] 导出到excel文件里的表头NAME 
     * @param sheetName 
     *            工作表的名称 
     * @param sheetSize 
     *            每个sheet中数据的行数,此数值必须小于65536 
     * @param output 
     *            java输出流 
     */  
    public static boolean exportExcel(List<?> list, String[] fieldName,  
            Object[] columnIt, String sheetName, int sheetSize,  
            OutputStream output) {  
        HSSFWorkbook workbook = new HSSFWorkbook();// 产生工作薄对象  
        if (sheetSize >= 65536) {  
            sheetSize = 65536;  
        }  
        double sheetNo = Math.ceil(list.size() / sheetSize);  
        for (int index = 0; index <= sheetNo; index++) {  
            HSSFSheet sheet = workbook.createSheet();// 产生工作表对象  
            workbook.setSheetName(index, sheetName+index);//设置工作表的名称.  
            HSSFRow row = sheet.createRow(0);// 产生一行  
            HSSFCell cell;// 产生单元格  
            
            //表头样式
            HSSFCellStyle headerStyle = (HSSFCellStyle) workbook .createCellStyle();// 创建标题样式  
            headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);    //设置垂直居中  
            headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);   //设置水平居中  
            HSSFFont headerFont = (HSSFFont) workbook.createFont(); //创建字体样式  
            headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗  
            headerFont.setFontName("Times New Roman");  //设置字体类型  
            headerFont.setFontHeightInPoints((short) 10);    //设置字体大小  
            headerStyle.setFont(headerFont);    //为标题样式设置字体样式 
            headerStyle.setFillBackgroundColor((short) 2);
            headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框  
            headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框  
            headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框  
            headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
            headerStyle.setWrapText(true); // 设置为自动换行 
            headerStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);// 设置背景色
            headerStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);// 设置前景色
            headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            
            //表body样式
            HSSFCellStyle cellStyle = (HSSFCellStyle) workbook .createCellStyle();
            cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);    //设置垂直居中  
            cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);   //设置水平居中
            cellStyle.setWrapText(true); // 设置为自动换行 
            
            // 写入各个字段的名称  
            for (int i = 0; i < fieldName.length; i++) { 
                cell = row.createCell(i); // 创建第一行各个字段名称的单元格 
                row.setHeight((short) 450);
                cell.setCellType(HSSFCell.CELL_TYPE_STRING); // 设置单元格内容为字符串型  
                // cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
                // //为了能在单元格中输入中文,设置字符集为UTF_16  
                cell.setCellValue(fieldName[i]); // 给单元格内容赋值  
                
                cell.setCellStyle(headerStyle); 
            }  
  
            int startNo = index * sheetSize;  
            int endNo = Math.min(startNo + sheetSize, list.size());  
            // 写入各条记录,每条记录对应excel表中的一行  
            for (int i = startNo; i < endNo; i++) {  
                row = sheet.createRow(i + 1 - startNo); 
                row.setHeight((short) 350);
                sheet.setColumnWidth(i,  4500);
                
                HashMap map = (HashMap) list.get(i);  
                for (int j = 0; j < columnIt.length; j++) {  
                    cell = row.createCell(j);  
                    cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
                    cell.setCellStyle(cellStyle);
                    // cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
                    Object value = map.get(columnIt[j]);  
                    if (value != null) {  
                        cell.setCellValue(map.get(columnIt[j]).toString());  
                    } else  
                        cell.setCellValue("");  
                }  
                execCount = execCount + 1;
            }  
        }  
        try {
        	//为了让百分比不显示100% 
        	execCount = execCount - (totalCount * 0.02);
        	workbook.write(output);
        	execCount = execCount + (totalCount * 0.02);
            output.flush();  
            output.close();  
            return true;  
        } catch (IOException e) {  
            e.printStackTrace();  
            System.out.println("Output is closed ");  
            System.out.println("清除了。。。。。。。。。。。");
			execCount = 0;
            return false;  
        }  
  
    }  
	
    public String exportExcelAction(){
    	HttpServletResponse response = this.getResponse();
    	HttpServletRequest request = this.getRequest();
		response.setCharacterEncoding("utf-8");
		String fileName = request.getParameter("fileName");
		// 初始化数据  
      /* List<Map<Object,Object>> list = new ArrayList<Map<Object,Object>>(); 
        for (int i = 0; i < 53333; i++) {  
            Map<Object,Object> map = new HashMap<Object,Object>();  
            map.put("id", i);  
            map.put("name", "姓名" + i);  
            map.put("age", 20+ i);  
            list.add(map);  
        } */
		long count = DataSourceFactory.getInstance().findCount("select count(1) from lotteryInfo where 1=1 ");
		List<ReqLottery> lotterInfo = DataSourceFactory.getInstance().getObjListByProcedure(ReqLottery.class, "PUBLIC_FINDVIEWPAGE_FIND", new Object[]{"lotteryInfo",
			"1", String.valueOf(count), "lotteryissue", "*", "0", "1", "1=1 " });
		
		List<Map<Object,Object>> list = new ArrayList<Map<Object,Object>>(); 
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
		for (ReqLottery lottery : lotterInfo) {
			Map<Object,Object> map = new HashMap<Object,Object>();  
			if(lottery.getLotteryId() == 1001){
				map.put("lotteryId", "重庆时时彩");
			}else{
				map.put("lotteryId", "江西时时彩");
			}
			map.put("lotteryNum", lottery.getLotteryNum());
			map.put("lotteryIssue", lottery.getLotteryIssue());
			String str = df.format(lottery.getLotteryDate());
			map.put("lotteryDateStr", str);
			map.put("lotteryType1", lottery.getLotteryType1());
			map.put("lotteryType2", lottery.getLotteryType2());
			map.put("lotteryType3", lottery.getLotteryType3());
			list.add(map);
		}
        totalCount = list.size();
        String[] alias = { "彩种类型", "开奖号码", "期号", "日期", "前三", "中三", "后三" };// excel的列头  
        String[] names = { "lotteryId", "lotteryNum", "lotteryIssue", "lotteryDateStr", "lotteryType1", "lotteryType2", "lotteryType3" };// 数据List中的Map的key值. 
       /* String[] alias = { "编号", "姓名", "年龄" };// excel的列头  
        String[] names = { "id", "name", "age"};*/
        OutputStream os = null;
        try {  
	        os = response.getOutputStream();
	        //FileOutputStream out = null;  
           // out = new FileOutputStream("C:\\Work\\e.xls");
            //设置对话框
            response.setHeader("Content-disposition", "attachment;filename="+ new String(fileName.getBytes("GB2312"),"ISO-8859-1"));
            //设置 MIME(Excel)
            response.setContentType("application/vnd.ms-excel");
            //设置编码
            response.setCharacterEncoding("UTF-8");
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        exportExcel(list, alias, names, "学生信息表", 60000, os); 
        System.out.println("成功");
        return null;
    }
    
    /**
     * 得到进度条的百分比
     * @return
     * @throws IOException
     */
    public String getProgressVal() throws IOException{
    	HttpServletResponse response = this.getResponse();
    	HttpServletRequest request = this.getRequest();
		response.setCharacterEncoding("utf-8");
		PrintWriter out = getResponse().getWriter();
		
		//第一次请求将已经处理的条数清0
		System.out.println("execCount:"+execCount+"   totalCount:"+totalCount);
		if(execCount == 0){
			out.print(0.01);
			return null;
		}
		try {
			double val = (execCount / totalCount) * 100;
			//DecimalFormat df = new DecimalFormat("#.00");
			//System.out.println("valule:"+df.format(val));
			if(val >= 100){
				System.out.println("val >= 100清除了。。。。。。。。。。。");
				execCount = 0;
			}
			if(execCount >= totalCount){
				System.out.println("execCount >= totalCount 清除了。。。。。。。。。。。");
				execCount = 0;
			}
			out.print(val);
			return null;
		} catch (Exception e) {
			e.printStackTrace();
			execCount = 0;
			out.print(0);
			return null;
		}finally{
			out.flush();
			out.close();
		}
    }
	public static void main(String[] args) {
		// 初始化数据  
        List<Map<Object,Object>> list = new ArrayList<Map<Object,Object>>();  
        for (int i = 0; i < 65536; i++) {  
            Map<Object,Object> map = new HashMap<Object,Object>();  
            map.put("id", i);  
            map.put("name", "姓名" + i);  
            map.put("age", 20+ i);  
            list.add(map);  
        }  
  
        String[] alias = { "编号", "姓名", "年龄" };// excel的列头  
        String[] names = { "id", "name", "age" };// 数据List中的Map的key值.  
        FileOutputStream out = null;  
        try {  
            out = new FileOutputStream("C:\\Work\\e.xls");  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        }  
  
        exportExcel(list, alias, names, "学生信息表", 60000, out);  
        System.out.println("----执行完毕----------");  
	}
}

 jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title></title>
	<link rel="stylesheet" type="text/css" href="/Lottery/easyui/themes/default/easyui.css">
	<link rel="stylesheet" type="text/css" href="/Lottery/easyui/themes/icon.css">
	<style type="text/css">
		* {
			font-size: 12px;
		a {
			text-decoration: none;
		}
		body {
			margin: 0px;
			padding: 0px;
			height: 100%;
		}
		#fm {
			margin: 0;
			padding: 10px 30px;
		}
		.ftitle {
			font-size: 14px;
			font-weight: bold;
			color: #666;
			padding: 5px 0;
			margin-bottom: 10px;
			border-bottom: 1px solid #ccc;
		}
		.fitem select{
			width:150px;
		}
		.fitem input{
			width:150px;
		}
		.fitem label {
			display: inline-block;
			width: 160px;
			text-align: right;
		}
		#searchbox {
			clear:both;
			padding-left:20px;
			padding-bottom: 5px;
		}
	</style>
	</head>
	<script type="text/javascript" src="/Lottery/js/jquery-1.6.min.js"></script>
	<script type="text/javascript" src="/Lottery/easyui/jquery.easyui.min.js"></script>
	<script type="text/javascript" src="/Lottery/easyui/locale/easyui-lang-zh_CN.js"></script>
	<script type="text/javascript" src="/Lottery/js/My97DatePicker/calendar.js"></script>
	<script type="text/javascript" src="/Lottery/js/My97DatePicker/WdatePicker.js"></script>
	<script type="text/javascript" src="/Lottery/js/mask.js"></script>
	<script type="text/javascript">
$(function(){
	$('#datagrid').datagrid({
		url : '<%=path%>/lottery/viewLottery_findLotteryInfo.action',
		title:'开奖信息',//表格标题
		iconCls:'icon-search',//表格图标
		nowrap: false,//是否只显示一行,即文本过多是否省略部分。
		striped: true,
		sortName: 'createTime',
		sortOrder: 'desc',
		idField:'terminalID',
		loadMsg:'拼命加载中 请稍后...',
		fitColumns:true,
		fit:true,
		pagination:true, //包含分页
		toolbar : '#tab-tools',//工具栏
		frozenColumns : [[
			{checkbox:true},
			{
				field : 'lotteryId',
				title : '彩种类型',
				width : 150,
				align : 'center',
				formatter:function(v,d,i){
					switch (parseInt(v)) {
					case 1001:
						return '重庆时时彩';
					case 1002:
						return '江西时时彩';
					default:
						return '未定义';
					}
				}
			}, {
				field : 'lotteryIssue',
				title : '期号',
				width : 150,
				align : 'center'
			}, {
				field : 'lotteryNum',
				title : '开奖号码',
				width : 120,
				align : 'center'
			}
		]],
		columns : [[
	         {
				field : 'lotteryDateStr',
				title : '开奖时间',
				width : 150,
				align : 'center'
			}, {
				field : 'lotteryType1',
				title : '前三形态',
				width : 100,
				align : 'center'
			}, {
				field : 'lotteryType2',
				title : '中三形态',
				width : 100,
				align : 'center'
			}, {
				field : 'lotteryType3',
				title : '后三形态',
				width : 100,
				align : 'center'
			}
		]],//单选
		onCheck:function(rowIndex,row){
			//if(row.auditState == 1002){
				//取消选择
			//	$('#datagrid').datagrid('unselectRow',rowIndex).datagrid('uncheckRow',rowIndex);
			//}
		},
		onClickRow:function(rowIndex,row){
			//if(row.auditState == 1002){
				//取消选择
			//	$('#datagrid').datagrid('unselectRow',rowIndex).datagrid('uncheckRow',rowIndex);
			//}
		},
		//全选
		onCheckAll:function(rows){
			//判断能不能选中
			//for(var i=0;i<rows.length;i++){
				//var row = rows[i];
				//if(row.auditState == 1002){
					//取消选择
				//	var rowIndex = $('#datagrid').datagrid('getRowIndex',row);
				//	$('#datagrid').datagrid('unselectRow',rowIndex).datagrid('uncheckRow',rowIndex);

				//}
			//}
		}, 
		pagination:true, //包含分页
		pageList: [10,20,30,50],//可以设置每页记录条数的列表  
		rownumbers:true,
		singleSelect:false,
		toolbar:[
			{
				text:'添加开奖信息',  
				iconCls:'icon-add',  
				handler:function(){
					$('#dlg').dialog('open').dialog('setTitle','添加收货地址');
					$('#fm').form('clear');
					submitType="add";
				}  
			},'-',
			{
				text:'修改开奖信息',  
				iconCls:'icon-edit',  
				handler:function(){
					var row = $('#datagrid').datagrid('getSelected');
					if (row){
						submitType="update";
						$('#dlg').dialog('open').dialog('setTitle','修改收货地址');
						$('#fm').form('load',row);
					}else{
						$.messager.alert('提示信息','请选选择一个进行修改!','info');  	
					}
				}  
			}		
		],onLoadSuccess:function(data){
			if(data.result == "error"){
				$.messager.show({title:'提示信息',msg:data.errorMsg,timeout:3000});
			}
		},onLoadError:function(data){
			$.messager.alert('提示信息','请求服务器失败!');
		}
	});
	
	$('#datagrid').datagrid('getPager').pagination({
		pageSize: 10,//每页显示的记录条数,默认为10  
        pageList: [10,20,30,50],//可以设置每页记录条数的列表  
        beforePageText: '第',//页数文本框前显示的汉字  
        afterPageText: '页    共 {pages} 页',  
        displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条记录'
	});

	$(".datagrid-toolbar").append($("#searchbox"));
	$(".search_btn").click(function(){
		$('#datagrid').datagrid('load',{
			lotteryId: $("#lotteryId").val(),
			lotterydate: $("#lotterydate").val(),
			lotteryIssue:$("#lotteryIssue").val()
		});
	});
	
	
	//导出报表
	var clearInterval;
	$(".print_btn").click(function(){
		window.location.href="<%=path%>/lottery/expExcel_exportExcelAction.action?fileName=Student.xls";
		$('#p').progressbar('setValue', 0);
		$(document).mask('正在导出报表...');
		$('#p').css({"display":"block"});
		//value += Math.floor(Math.random() * 10);
		//$('#p').progressbar('setValue', value);
		clearInterval = setInterval(reqProgressVal, 200);
	})
});
//得到进度条百分
function reqProgressVal(){
	var value = $('#p').progressbar('getValue');
	if(value == 100){
		clearInterval(clearInterval);
		$(document).unmask();
		$('#p').css({"display":"none"});
		return;
	}
	$.ajax({
		type : "post", // 以post方式与后台沟通
		url : '<%=path%>/lottery/expExcel_getProgressVal.action',
		dataType : "json",
		async : false,
		data: {},
		success : function(data) {
			$('#p').progressbar('setValue', data.toFixed(2));
		},
		error : function() {
			alert("请求服务器失败");
		}
	});
}

</script>
	<body class="ContentBody">
		<!-- 进度条 -->
		<div id="p" class="easyui-progressbar" style="width:400px; display:none"></div> 
		
		<table id="datagrid"></table>
		<div id="searchbox">  
			<form id="search_fm" method="post">
				<div class="fitem">
					彩种类型:<select name="" id="lotteryId">
						 	 <option value="">==请选择==</option>
						 	 <option value="1001">重庆时时彩</option>
						 	 <option value="1002">江西时时彩</option>
						  </select>
					&nbsp;&nbsp;&nbsp;&nbsp;
					开奖时间:<input type="text" name="" id="lotterydate" readonly="readonly" size="10" onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})"  maxlength="10"  />
					&nbsp;&nbsp;&nbsp;&nbsp;
					开奖期号:<input type="text" name="" id="lotteryIssue"/>
					<br/><br/>
					<a href="#" class="easyui-linkbutton search_btn" iconCls="icon-search">查询</a> 
					<a href="#" class="easyui-linkbutton print_btn" iconCls="icon-print">导出报表</a> 
					<!-- <input type="button" value="点我" onclick="$(document).mask('加载...').click(function(){$(document).unmask()})" /> -->
				</div>
			</form>
		</div>
		
	</body>
</html>

 效果图如下:


easyUI 滚动条 Poi导出报表
            
    
    
        导报表EasyUI滚动条poi
 
easyUI 滚动条 Poi导出报表
            
    
    
        导报表EasyUI滚动条poi
 
easyUI 滚动条 Poi导出报表
            
    
    
        导报表EasyUI滚动条poi
 

  • easyUI 滚动条 Poi导出报表
            
    
    
        导报表EasyUI滚动条poi
  • 大小: 122.2 KB
  • easyUI 滚动条 Poi导出报表
            
    
    
        导报表EasyUI滚动条poi
  • 大小: 182.8 KB
  • easyUI 滚动条 Poi导出报表
            
    
    
        导报表EasyUI滚动条poi
  • 大小: 185 KB