一:页面图片显示预览:
创新互联是一家集网站建设,眉县企业网站建设,眉县品牌网站建设,网站定制,眉县网站建设报价,网络营销,网络优化,眉县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1)如下图:
2)点击导出按钮后预览:
3)最终生成的excel表格图片预览:
二:代码演示:
说明:执行操作时,请先引进导出excel表格的jar文件包。
找到导出按钮所执行的js方法,在java后天查看该方法的实现即可。
1)jsp代码:
[html] view plaincopyprint?
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%
%@taglib prefix="s" uri="/struts-tags" %
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%
html
head
base href="%=basePath%"
title驾校合格率排名/title
link href="jsp/commonstyle/css/tabStyle.css" rel="stylesheet" type="text/css"
link rel="STYLESHEET" type="text/css" href="%=basePath%jsp/hgltj/js/tablesort.css"
script type="text/javascript" src="%=basePath%jsp/system/common/js/publicColor.js"/script
script type="text/javascript" src="jsp/commonstyle/js/js/My97DatePicker/WdatePicker.js" defer="defer"/script
script type="text/javascript" src="%=basePath%jsp/hgltj/js/tablesort.js"/script
script language="JavaScript"
function load()
{
//根据分辨率设置表格大小
maxw=document.getElementById("maintb").offsetWidth;
if(maxw824){//1024分辨率未展开
mainbox.width="98%";
} else if(maxw1013){//1024分辨率展开
mainbox.width="98%";
} else if(maxw1081){//1280分辨率未展开
mainbox.width="95%";
} else if(maxw1270){//1280分辨未展开
mainbox.width="95%";
}else{//1280以上分辨展开
mainbox.width="98%";
}
}
/script
script
function overIt(){
var the_obj = event.srcElement;
if(the_obj.tagName.toLowerCase() == "td"){
the_obj=the_obj.parentElement;
the_obj.oBgc=the_obj.currentStyle.backgroundColor;
the_obj.oFc=the_obj.currentStyle.color;
the_obj.style.backgroundColor='#4073C4';
the_obj.style.color='#ffffff';
the_obj.style.textDecoration='underline';
}
}
function outIt(){
var the_obj = event.srcElement;
if(the_obj.tagName.toLowerCase() == "td"){
the_obj=the_obj.parentElement;
the_obj.style.backgroundColor=the_obj.oBgc;
the_obj.style.color=the_obj.oFc;
the_obj.style.textDecoration='';
}
}
function serch(){
document.getElementById("formName").action="%=basePath %hgltj.action?method=getHglpm";
document.getElementById("formName").submit();
}
function tbbt(){
var jzrq=document.getElementById("jzrqId").value;
//var jxmc=document.getElementById("jxmcId").value;
window.open('%=basePath %hgltj.action?method=getHglpmTbtjjxkshgl.jzrq='+jzrq+'tjjxkshgl.zt='+1,'','height=650,width=1250,top=150,left=200,toobar=no,menubar=no,scrollbars=yes,resizable=no,location=no,');
}
function openwd(){
document.getElementById("formName").action="%=basePath %hgltj.action?method=downJxhglPm";
document.getElementById("formName").submit();
}
/script
/head
BODY onLoad="load()" style="background: url(images/cont_bg.gif); background-repeat: repeat-y"
input type="hidden" name="method" value="getDriverInfoList"/
table border="0" width="100%" cellspacing="0" cellpadding="0" id="maintb"
tr
td align="center"
table width="90%" border="0" cellspacing="0" cellpadding="0" id="mainbox" style="background:url(jsp/commonstyle/images/usermessage_02.gif); background-repeat:repeat-x;"
!--宽度可变内容框--
tr
td width="33" height="27" style=" background:url(jsp/commonstyle/images/usermessage_01.gif); background-position:left; background-repeat:no-repeat;" /td
td width="965" class="style1"font color="black"驾校合格率排名/font/td
td width="14" height="27" style=" background:url(jsp/commonstyle/images/usermessage_03.gif); background-position:right; background-repeat:no-repeat;" /td
/tr
tr
td colspan="3"
!--页面主体内容开始--
!--查询条件--
form action="" name="formName" method="post" style="margin:0px" id="formName" theme="simple"
table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;" id="tj" align="center"
tr align="left"
td class="tjbg1" style="text-align: left"
!-- input type="hidden" id="method" name="method" value="getHglpm"/ --
统计日期:
input type="text" name="tjjxkshgl.jzrq" id="jzrqId" value="s:property value="tjjxkshgl.jzrq"/" onclick="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM'})"/
!-- 驾校名称:
s:select id="jxmcId" name="tjjxkshgl.jxxh" value="tjjxkshgl.jxxh" list="schoolList" listKey="jxxh" listValue="jxmc" headerKey="" headerValue="--请选择--" theme="simple"/s:select --
input name="input" value=" 统 计 " type="button" class="normalbtn" onClick="serch()" style="margin-bottom: 5px" /
input name="input" type="button" value=" 合格率图表 " onclick="tbbt()" class="normalbtn" style="margin-bottom: 5px" /
input id="Button1" type="button" value=" 导 出 " onclick="openwd();" class="normalbtn" style="margin-bottom: 5px" /
/td
/tr
/table!--查询结果--
/form
!--查询结果--
table width="100%" border="0" cellpadding="4" cellspacing="1" bgcolor="#abcfff" id="cxjg" align="center"
thead
tr class="tbtitle"
td width="4%" align="center" class="t1"名次/td
td width="8%" align="center" class="t1"名称/td
td class="t1" width="5%" align="center"科目一/td
td class="t1" width="5%" align="center"科目二/td
td class="t1" width="5%" align="center"科目三/td
td class="t1" width="5%" align="center"平均合格率/td
td class="t1" width="5%" align="center"操作/td
/tr
/thead
s:iterator id="jxhgl" value="jxhelpmList" status="st"
tr class="changeColor" onMouseOver="overIt()" onMouseOut="outIt()" style="cursor: hand" align="center"
tds:property value="#st.index+1"//td
tds:property value="#jxhgl.jxmc"//td
tds:property value="#jxhgl.km1hgl"//td
tds:property value="#jxhgl.km2hgl"//td
tds:property value="#jxhgl.km3hgl"//td
tds:property value="#jxhgl.avghgl"/%/td
td
a href="javascript:" onclick="openWin('%=basePath %hgltj.action?method=getTbForJxxhtjjxkshgl.jxxh=s:property value="#jxhgl.jxxh"/tjjxkshgl.zt=1','',1250,750);"图表/a
/td
/tr
/s:iterator
/table
/table
/td
/tr
/table
/body
/html
2)java代码演示:
[java] view plaincopyprint?
/**
* 驾校合格率导出excel图表
*/
//response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
String tmptitle = "驾校合格率排名"; // 标题
response.setHeader("Content-disposition", "attachment; filename="+new String(tmptitle.getBytes(),"iso8859-1")+".xls");// 设定输出文件头
response.setContentType("application/vnd.ms-excel");// 定义输出类型
wbook = Workbook.createWorkbook(os); // 建立excel文件
WritableSheet wsheet = wbook.createSheet(tmptitle, 0); // sheet名称
// 设置excel标题
//cellFormat.setBackground(Colour.AQUA);
cellFormat.setFont(wfont);
label.setCellFormat(cellFormat);
wsheet.addCell(label);
//wsheet.addCell(new Label(0, 0, tmptitle, wcfFC));
wsheet.setRowView(0,500); //第一行高度
wsheet.mergeCells(0, 0, 6, 1); //合并单元格(第一列的第一行和第七列的第二行合并)
//wsheet.mergeCells(0, 1, 9, 1);
// wsheet.mergeCells(0, 2, 0, 4);
// wsheet.mergeCells(1, 2, 3, 2);
// wsheet.mergeCells(4, 2, 6, 2);
// wsheet.mergeCells(7, 2, 9, 2);
wsheet.setColumnView(0,10); //宽度
wsheet.setColumnView(1,25); //宽度
wsheet.setColumnView(2,10); //宽度
wsheet.setColumnView(3,10); //宽度
wsheet.setColumnView(4,10); //宽度
wsheet.setColumnView(5,10); //宽度
// 开始生成主体内容
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD,false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
wcfFC = new WritableCellFormat(wfont);
wsheet.addCell(new Label(0, 2, "名次",wcfFC));
wsheet.addCell(new Label(1, 2, "驾校名称",wcfFC));
wsheet.addCell(new Label(2, 2, "科目一",wcfFC));
wsheet.addCell(new Label(3, 2, "科目二",wcfFC));
wsheet.addCell(new Label(4, 2, "科目三",wcfFC));
wsheet.addCell(new Label(5, 2, "合格率",wcfFC));
int count=jxhelpmList.size();
if(count0){ ////判断集合是否不为0
TjJxkshgl tjhgl=null;
for(int i=0;ijxhelpmList.size();i++){
tjhgl=(TjJxkshgl)jxhelpmList.get(i);
wsheet.addCell(new Label(0, i+3, (i+1)+""));
wsheet.addCell(new Label(1, i+3, tjhgl.getJxmc()));
wsheet.addCell(new Label(2, i+3, tjhgl.getKm1hgl()));
wsheet.addCell(new Label(3, i+3, tjhgl.getKm2hgl()));
wsheet.addCell(new Label(4, i+3, tjhgl.getKm3hgl()));
wsheet.addCell(new Label(5, i+3, tjhgl.getAvghgl()));
}
import java.util.concurrent.Semaphore;
/**
*
* @author Mi Zhou
*/
public class LibraryDemo {
// 主要在于理解多线程变量共享和互斥的问题
// 这里共享和互斥的变量就是 图书馆的这10个座位
// 我们用信号量 Semaphore 来表示用 10 个座位的这个图书馆
// (如果目前不知道什么是 Semaphore,建议先了解这个概念)
public static void main(String[] args) throws Exception {
// 创建有 10 个许可的信号量(在这里可以理解为图书馆,图书馆最多容纳 10 个人)
Semaphore semaphore = new Semaphore(10);
// 假设有 15 个人来图书馆读书,每个人都在图书馆待 1 秒
for (int i = 1; i = 15; ++i) {
ReaderRunnable rr = new ReaderRunnable(i, 1, semaphore);
new Thread(rr).start();
}
// 查看输出你会发现图书馆最多是同时 10 个读者在里面
}
}
// 读者线程
class ReaderRunnable implements Runnable {
private final int readerNo; // 读者编号
private final int stayTime; // 这个读者在图书馆待的时间,以 秒 计
private final Semaphore semaphore; // 当前的图书馆
public ReaderRunnable(int readerNo, int stayTime, Semaphore semaphore) {
this.readerNo = readerNo;
this.stayTime = stayTime;
this.semaphore = semaphore;
}
@Override
public void run() {
try {
// 请求进入图书馆,如果图书馆没有座位了,这个方法会阻塞,直到图书馆有座位
semaphore.acquire();
System.out.println("读者 " + readerNo + " 进入图书馆");
Thread.sleep(stayTime * 1000); // 在图书馆待着
System.out.println("读者 " + readerNo + " 离开图书馆");
semaphore.release(); // 离开图书馆
} catch (InterruptedException ex) {
ex.printStackTrace(System.err);
}
}
}
参考如下:
/**
* 转换字符串为时间,格式为 format.
*/
public static Date parseDate(String format, String d) {
try {
return new SimpleDateFormat(format).parse(d);
} catch (Exception e) {
}
return null;
}