|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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("
");
//[/test_excel.jsp;Line:6]
response.reset();//[/test_excel.jsp;Line:7]
//response.setContentType("application/vnd.ms-excel");
//[/test_excel.jsp;Line:8]
Test.writeExcel(response.getOutputStream());//[/test_excel.jsp;Line:9]
}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("
");
//[/test_excel.jsp;Line:2]
response.reset();//[/test_excel.jsp;Line:3]
response.setContentType("application/vnd.ms-excel");//[/test_excel.jsp;Line:4]
Test.writeExcel(response.getOutputStream());//[/test_excel.jsp;Line:5]
}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,谢谢。 |
|