JAVA编程:JSP静态输入Excel及中文乱码的办理
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点excel|js|静态|办理|中文|中文乱码比来在网上看到一个用java来利用excel的opensource,在weblogic上试用了一下,以为很不错,特此向人人保举一下。
起首往http://www.andykhan.com/jexcelapi/index.html下载最新的JExcelApi,把jxl.jar置于你的classpath中。
写一个javaBean,使用JExcelApi来静态天生excel文档,我这里写一个最复杂的,表示性的。庞大的你大概还要查询数据库甚么的。
///////////////////////////Test.java///////////////////////////////////////////
packagecom.jagie.test;
importjava.io.*;
importjxl.*;
importjxl.write.*;
importjxl.format.*;
importjava.util.*;
importjava.awt.Color;
publicclassTest{
publicstaticvoidwriteExcel(OutputStreamos)throwsException{
jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(os);
jxl.write.WritableSheetws=wwb.createSheet("TestSheet1",0);
jxl.write.LabellabelC=newjxl.write.Label(0,0,"我爱中国");
ws.addCell(labelC);
jxl.write.WritableFontwfc=newjxl.write.WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,
UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);
jxl.write.WritableCellFormatwcfFC=newjxl.write.WritableCellFormat(wfc);
wcfFC.setBackground(jxl.format.Colour.RED);
labelC=newjxl.write.Label(6,0,"中国爱我",wcfFC);
ws.addCell(labelC);
//写进Exel事情表
wwb.write();
//封闭Excel事情薄对象
wwb.close();
}
//最好写一个如许的main办法来测试一下你的这个class是不是写好了。
publicstaticvoidmain(String[]args)throwsException{
Filef=newFile("kk.xls");
f.createNewFile();
writeExcel(newFileOutputStream(f));
}
}
写一个jsp,来使用Test这个javabean输入excel文档。
///////////////////////////test_excel.jsp//////////////////////////
<%@pageimport="com.jagie.test.Test"%>
<%
response.reset();
response.setContentType("application/vnd.ms-excel");
Test.writeExcel(response.getOutputStream());
%>
如许就半途而废了,你用ie会见test_excel.jsp就可以在ie内里翻开静态天生的excel文档了。一点乱码也没有。
大概有人会问:response.reset();可不成以不要这一句,我的倡议是必定要写,除非你能包管response的buffer内里没有其余工具。
另有人大概会问:我在jsp开首加上<%@pagecontentType="application/vnd.ms-excel;charset=GBK"%>这一句,往失落response.setContentType("application/vnd.ms-excel");行不可?回覆这个成绩很复杂,就是检察jsp服务器编译jsp后天生的java代码,假如改成如许,我的welogic7编译test_excel.jsp后天生的java文件的表示性代码是如许的:
publicvoid_jspService(javax.servlet.http.HttpServletRequestrequest,
javax.servlet.http.HttpServletResponseresponse)throwsjava.io.IOException,
javax.servlet.ServletException{
//declareandsetwell-knownvariables:
javax.servlet.ServletConfigconfig=getServletConfig();
javax.servlet.ServletContextapplication=config.getServletContext();
javax.servlet.jsp.tagext.Tag_activeTag=null;
//variablesforTagextensionprotocol
Objectpage=this;
javax.servlet.jsp.JspWriterout;
javax.servlet.jsp.PageContextpageContext=
javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this,
request,response,null,true,8192,true);
response.setHeader("Content-Type","application/vnd.ms-excel;charset=GBK");
out=pageContext.getOut();
JspWriter_originalOut=out;
javax.servlet.http.HttpSessionsession=request.getSession(true);
try{//errorpagetryblock
response.setContentType("application/vnd.ms-excel;charset=GBK");
out.print("
");
out.print("
");
//
response.reset();//
//response.setContentType("application/vnd.ms-excel");
//
Test.writeExcel(response.getOutputStream());//
}catch(Throwable__ee){
while(out!=null&&out!=_originalOut)out=pageContext.popBody();
((weblogic.servlet.jsp.PageContextImpl)pageContext).handlePageException((Throwable)__ee);
}
//beforefinalclosebrace...
}
很分明,屏障response.setContentType("application/vnd.ms-excel");后,在Test.writeExcel(response.getOutputStream());之前,response.reset();以后没有设置responsecontenttype的准确范例,固然输入为乱码了。而准确输入excel的jsp的编译后源码是如许的:
publicvoid_jspService(javax.servlet.http.HttpServletRequestrequest,
javax.servlet.http.HttpServletResponseresponse)throwsjava.io.IOException,
javax.servlet.ServletException
{
//declareandsetwell-knownvariables:
javax.servlet.ServletConfigconfig=getServletConfig();
javax.servlet.ServletContextapplication=config.getServletContext();
javax.servlet.jsp.tagext.Tag_activeTag=null;
//variablesforTagextensionprotocol
Objectpage=this;
javax.servlet.jsp.JspWriterout;
javax.servlet.jsp.PageContextpageContext=
javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this,request,response,null,true,8192,true);
out=pageContext.getOut();
JspWriter_originalOut=out;
javax.servlet.http.HttpSessionsession=request.getSession(true);
try{//errorpagetryblock
out.print("
");
//
response.reset();//
response.setContentType("application/vnd.ms-excel");//
Test.writeExcel(response.getOutputStream());//
}catch(Throwable__ee){
while(out!=null&&out!=_originalOut)out=pageContext.popBody();
((weblogic.servlet.jsp.PageContextImpl)pageContext).handlePageException((Throwable)__ee);
}
//beforefinalclosebrace...
}
人人能够看到在response.reset();以后,Test.writeExcel(response.getOutputStream());之前准确的设置了response的输入内容。以是输入就一般了。
最初,但愿这篇文章能对你有所启示,若有毛病的地方,敬请品评斧正!
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种为 Internet发展的计算机语言 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
页:
[1]
2