|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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性能上肯定会站上风的。 |
|