老尸 发表于 2015-1-18 11:08:01

JAVA网页设计jsp和excel的数据互换-----我的项目理论...

java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),excel|js|数据|项目前段工夫,客户请求我们的体系能够完成与msexcel的数据互换,能够把体系中的数据导进导出到excel.我们的体系是一个用java做的b/s布局的MIS体系.为懂得决这个
成绩,我找到了一个专门操纵excel的开源项目jxl,并找到了一篇先容怎样利用jxl开辟包的好文章:
--http://www-900.cn.ibm.com/developerWorks/cn/java/l-javaExcel/#2
依据客户的请求,用jxl完成了以下功效:
1:在客户端读取excel文件的数据;
2:把体系数据导出到excel模板文件中.
关于第一个成绩,我入手下手思索的是写一个客户端运转的applet小程序.厥后才分明,java为了平安,applet是不克不及任意会见客户真个文件体系的(:(初级毛病!不要小看我).
因而就想到了先把excel文件上传到服务器,然后用jxl来剖析数据.怎样上传文件我就不说了,只需做过jsp的人应当都晓得吧.次要讲一下怎样剖析.因为上传的数据都是
有流动格局的,以是我们做了一个excel模板,客户必需依照模板的格局填写数据,程序才能够一般的剖析.
剖析实在也是很复杂的,但在做的过程当中发明,excel中的工夫格局数据必要出格注重:假如依照文本格局读取工夫格局数据,读取的工夫是毛病的(人人能够实验一下).
为懂得决读取工夫毛病的成绩,我细心研讨了一下jxl的api,呵呵,竟然发明了一个好东东:DateCell类,用它的getDate办法能够失掉一个cell的date对象.不外因为
国际化的必要,这个date对象失掉的是格林尼治工夫,你必要处置一下.
至于导出,实在和导进差未几,不过就是先会见一下数据库,把失掉的信息写进excel文件然后下载.
上面是我写的导进导出周临盆企图的java类,个中入手下手的几行正文失落的部分分离是下载和上传的试例.
(实在模板也很关头,上面的程序是基于模板而写的,不外信任人人看了上面的程序,也能够晓得模板的模样了,必要重点申明的是,在模板中,填写工夫的字段必需设置成时
间格局-----在excel中点击右键菜单轻松弄定)

/*
*CreateDate:2004-11-910:20
*CreateBy:李春雷
*purpose:和周企图相干的导进导出操纵
*/

/**********************周临盆下载示例*****************
ExcelZJHXMmyZJH=newExcelZJHXM();
myZJH.download("mydataZjh","20041018003");
****************************************************/

/**********************周企图上传示例*****************
ExcelZJHXMtest=newExcelZJHXM();
test.upload("zscjhtest");
if(test.getFlag()){
System.out.println("begintest--------------");
ArrayLista=test.getData();
for(inti=0;i<a.size();i++){
ExcelZJHXM.dataZJHXMmydata=(ExcelZJHXM.dataZJHXM)a.get(i);
System.out.println(mydata.XH+""+mydata.XMMC+""+mydata.GZNR+""+mydata.SFTD+""+mydata.TDFW+""+mydata.JHLRFLBH+""+mydata.JHLRBH+""+mydata.ZXDWMC+""+mydata.PHDWMC+""+mydata.DBRMC+""+mydata.JHKSSJ+""+mydata.JHWCSJ+""+mydata.BZ);

}
}else{
System.out.println("模板毛病");
}
*****************************************************/

packagecom.infoearth.excel;

importcom.infoearth.common.DataAccess;//我们项目本人的会见数据库的东东
importjava.io.FileInputStream;
importjava.io.InputStream;
importjava.sql.SQLException;
importjava.sql.*;
importjava.io.*;
importjava.io.Serializable;
importjava.util.*;
importjavax.sql.RowSet;
importjxl.Cell;
importjxl.Sheet;
importjxl.Workbook;
importjxl.write.*;
importjava.text.DateFormat;
importjxl.DateCell;
importjava.text.*;

publicclassExcelZJHXM
{
privatebooleanflag=false;

privateArrayListsubdata=newArrayList();

publicbooleandownload(Stringfilename,Stringjhbh){
Connectionconn=null;
PreparedStatementpStatement=null;
ResultSetrs=null;
DataAccessdBean=newDataAccess();
Stringmysql;
mysql="selectXH,XMMC,GZNR,SFTD,TDFW,JHLRFLBH,JHLRBH,ZXDWMC,PHDWMC,DBRMC,JHKSSJ,JHWCSJ,BZfromJH_ZJHXMwhereJHBH="+jhbh+"orderbyjhxmbhasc";
try{
conn=dBean.getConnection();
pStatement=conn.prepareStatement(mysql);
rs=pStatement.executeQuery();
Workbookwb=Workbook.getWorkbook(newFile("pengyuewebmis        emplatezscjh.xls"));
WritableWorkbookbook=Workbook.createWorkbook(newFile("pengyuewebmisdownload"+filename+".xls"),wb);
WritableSheetsheet=book.getSheet("zscjh");
jxl.write.WritableCellFormatwcfFC=newjxl.write.WritableCellFormat();
wcfFC.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
inti=4;
jxl.write.DateFormatdf=newjxl.write.DateFormat("yyyy-mm-ddhh:mm");
jxl.write.WritableCellFormatwcfDF=newjxl.write.WritableCellFormat(df);
wcfDF.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
while(rs.next()){
sheet.addCell(newLabel(2,i,rs.getString("XH"),wcfFC));//序号
sheet.addCell(newLabel(3,i,rs.getString("XMMC"),wcfFC));//项目称号
sheet.addCell(newLabel(4,i,rs.getString("GZNR"),wcfFC));//事情内容
sheet.addCell(newLabel(5,i,rs.getString("SFTD"),wcfFC));//是不是停电
sheet.addCell(newLabel(6,i,rs.getString("TDFW"),wcfFC));//停电局限
sheet.addCell(newLabel(7,i,rs.getString("JHLRFLBH"),wcfFC));//义务来历
sheet.addCell(newLabel(8,i,rs.getString("JHLRBH"),wcfFC));//来历编号
sheet.addCell(newLabel(9,i,rs.getString("ZXDWMC"),wcfFC));//实行单元
sheet.addCell(newLabel(10,i,rs.getString("PHDWMC"),wcfFC));//共同单元
sheet.addCell(newLabel(11,i,rs.getString("DBRMC"),wcfFC));//督办人
//sheet.addCell(newLabel(12,i,rs.getString("JHKSSJ"),wcfFC));//入手下手工夫
//sheet.addCell(newLabel(13,i,rs.getString("JHWCSJ"),wcfFC));//停止工夫
if(rs.getString("JHKSSJ")!=null)sheet.addCell(newjxl.write.DateTime(12,i,DateFormat.getDateTimeInstance().parse(rs.getString("JHKSSJ")),wcfDF));
if(rs.getString("JHWCSJ")!=null)sheet.addCell(newjxl.write.DateTime(13,i,DateFormat.getDateTimeInstance().parse(rs.getString("JHWCSJ")),wcfDF));
sheet.addCell(newLabel(14,i,rs.getString("BZ"),wcfFC));//备注
i++;
}
book.write();
book.close();
rs.close();
pStatement.close();
returntrue;
}

catch(Exceptione)
{
e.printStackTrace();
returnfalse;
}
finally{
try{

if(rs!=null){
rs.close();
}

if(pStatement!=null){
pStatement.close();
}
if(conn!=null){
conn.close();
}
}
catch(SQLExceptionsqle){
conn=null;
}
}
}

publicvoidupload(Stringfilename){
Stringflagstr;
try{
jxl.Workbookrwb=Workbook.getWorkbook(newFile("pengyuewebmisupload"+filename+".xls"));
Sheetst=rwb.getSheet("zscjh");
inti=4;//其始列-1
flagstr=st.getCell(0,0).getContents();
if(flagstr.equals("zscjhbegin"))flag=true;
while(st.getCell(2,i).getContents().length()!=0&&flag==true){
dataZJHXMmydata=newdataZJHXM();
for(intj=2;j<st.getColumns();j++){
if(st.getCell(j,0).getContents().equals("XH"))mydata.XH=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("XMMC"))mydata.XMMC=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("GZNR"))mydata.GZNR=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("SFTD"))mydata.SFTD=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("TDFW"))mydata.TDFW=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("JHLRFLBH"))mydata.JHLRFLBH=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("JHLRBH"))mydata.JHLRBH=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("ZXDWMC"))mydata.ZXDWMC=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("PHDWMC"))mydata.PHDWMC=st.getCell(j,i).getContents();
if(st.getCell(j,0).getContents().equals("DBRMC"))mydata.DBRMC=st.getCell(j,i).getContents();
//工夫处置
if(st.getCell(j,0).getContents().equals("JHKSSJ"))mydata.JHKSSJ=FormateData(st.getCell(j,i));
if(st.getCell(j,0).getContents().equals("JHWCSJ"))mydata.JHWCSJ=FormateData(st.getCell(j,i));
if(st.getCell(j,0).getContents().equals("BZ"))mydata.BZ=st.getCell(j,i).getContents();
}
subdata.add(mydata);
i++;
}
rwb.close();
}catch(Exceptione){
e.printStackTrace();
flag=false;
}
}


//处置日期格局数据
publicStringFormateData(Cellformatecell){
try{
java.util.Datemydate=null;
DateCelldatecll=(DateCell)formatecell;
mydate=datecll.getDate();
longtime=(mydate.getTime()/1000)-60*60*8;
mydate.setTime(time*1000);
Calendarcal=Calendar.getInstance();
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-ddHH:mm");
returnformatter.format(mydate);
}
catch(Exceptione){
e.printStackTrace();
returnnull;
}
}

publicbooleangetFlag(){
returnflag;
}

publicArrayListgetData(){
returnsubdata;
}

publicstaticclassdataZJHXMimplementsSerializable
{
publicStringXH;
publicStringXMMC;
publicStringGZNR;
publicStringSFTD;
publicStringTDFW;
publicStringJHLRFLBH;
publicStringJHLRBH;
publicStringZXDWMC;
publicStringPHDWMC;
publicStringDBRMC;
publicStringJHKSSJ;
publicStringJHWCSJ;
publicStringBZ;

publicdataZJHXM(){
XH="";
XMMC="";
GZNR="";
SFTD="";
TDFW="";
JHLRFLBH="";
JHLRBH="";
ZXDWMC="";
PHDWMC="";
DBRMC="";
JHKSSJ="";
JHWCSJ="";
BZ="";
}

}
}



你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。

冷月葬花魂 发表于 2015-1-20 14:53:19

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

活着的死人 发表于 2015-1-29 11:10:29

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

小魔女 发表于 2015-2-6 00:29:23

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

爱飞 发表于 2015-2-14 16:11:17

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

仓酷云 发表于 2015-3-4 07:57:07

是一种语言,用以产生「小应用程序(Applet(s))

飘灵儿 发表于 2015-3-19 05:33:52

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

若天明 发表于 2015-3-27 08:16:18

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。
页: [1]
查看完整版本: JAVA网页设计jsp和excel的数据互换-----我的项目理论...