仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1310|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:JSP静态输入Excel及中文乱码的办理

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:39:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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,谢谢。
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-21 12:28:10 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
活着的死人 该用户已被删除
板凳
发表于 2015-1-29 13:47:31 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
透明 该用户已被删除
地板
发表于 2015-2-2 21:51:21 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
金色的骷髅 该用户已被删除
5#
发表于 2015-2-5 13:12:59 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
小妖女 该用户已被删除
6#
发表于 2015-2-9 02:20:47 | 只看该作者
是一种为 Internet发展的计算机语言
不帅 该用户已被删除
7#
发表于 2015-2-10 07:36:22 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
谁可相欹 该用户已被删除
8#
发表于 2015-2-19 00:48:53 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
老尸 该用户已被删除
9#
发表于 2015-3-6 11:30:00 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-7 06:05:02 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
精灵巫婆 该用户已被删除
11#
发表于 2015-3-8 22:19:00 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
乐观 该用户已被删除
12#
发表于 2015-3-9 10:14:50 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
萌萌妈妈 该用户已被删除
13#
 楼主| 发表于 2015-3-11 09:48:57 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
灵魂腐蚀 该用户已被删除
14#
发表于 2015-3-18 03:24:41 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
第二个灵魂 该用户已被删除
15#
发表于 2015-3-25 10:45:02 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
变相怪杰 该用户已被删除
16#
发表于 2015-4-1 01:09:41 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
若天明 该用户已被删除
17#
发表于 2015-4-21 02:21:51 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
因胸联盟 该用户已被删除
18#
发表于 2015-4-21 04:35:25 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
莫相离 该用户已被删除
19#
发表于 2015-4-26 18:17:11 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
小女巫 该用户已被删除
20#
发表于 2015-5-2 20:44:06 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 07:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表