用jxl输出excel的源代码(送给以前和我一样对excel)

来源:百度文库 编辑:神马文学网 时间:2024/04/28 09:29:24
(原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
回复: 23   页数: 2   最后提交: Mar 16, 2006 5:05:59 PM
欢迎, 客人
访客设置
转到
发新帖
回复此主题
搜索论坛
返回到 主题 列表 主题: [<< |>> ]
回复: 23   页数: 2   [12 |>> ]
lzr [普通用户]
发帖数: 485
活跃积分: 427
技术积分: 10
可用币值: 17
注册时间: 2005-4-13
用户状态:正常
(原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 16, 2005 4:03:54 PM 加5分  引用回复  发消息
以前第一次要求输出excel报表的时候,我上网查了N多资料,用了N久的时间才理清头绪,所以我把我写的这个excel输出的组件发上来给大家,给新手以帮助,也请高手指点指点。
下面是源代码:请大家指教:
/*
* Created on 2005-8-16
* 如需引用,请保留作者名
*/
package com.paic.pacc.common.util;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
* @author lzr
* 根据提供的各个参数进行excel输出的操作
*/
public class ExcelBill {
/**
* 根据excel文件名,字段名,查询结果和排版大小进行excel输出
* @param filename  文件名 title 标题 characterName 字段中文名 characterId 数据库字段名 查询结果 res
* @note 注意,本类中结果集是用ibatis生成 每一行记录为一个DTO(javabean)所有记录(DTO)用一个List封装
*/
public static void excelBill(String fileName,String title,String characterName,String characterId,List res,HttpServletResponse httpResponse){
try{
OutputStream os=httpResponse.getOutputStream();
httpResponse.setContentType("application/vnd.ms-excel");
httpResponse.setHeader("Content-disposition", "attachment; filename=" + fileName);
//开始写入excel
//加标题
//标题字体
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.COURIER, 18, WritableFont.BOLD,true);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
wcfFC.setAlignment(jxl.format.Alignment.CENTRE);
wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
//字段字体
jxl.write.WritableFont wfc1 = new jxl.write.WritableFont(WritableFont.COURIER,10, WritableFont.BOLD,true);
jxl.write.WritableCellFormat wcfFC1 = new jxl.write.WritableCellFormat(wfc1);
wcfFC1.setAlignment(jxl.format.Alignment.CENTRE);
wcfFC1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
//结果字体
jxl.write.WritableCellFormat wcfFC2 = new jxl.write.WritableCellFormat();
wcfFC2.setAlignment(jxl.format.Alignment.CENTRE);
wcfFC2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
WritableWorkbook wbook = Workbook.createWorkbook(os);
//写sheet名称
WritableSheet wsheet = wbook.createSheet("sheet1", 0);
Date aaa=new Date();
SimpleDateFormat aSimpleDateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String today = aSimpleDateFormat.format(aaa);
String[] splistCharacterName=characterName.split(",");
String[] splistCharacterId=characterId.split(",");
int characterSize=splistCharacterName.length;
int resSize=res.size();
int i;
for(i=0;i//加入字段名
wsheet.addCell(new jxl.write.Label(i,3,splistCharacterName,wcfFC1));
System.out.println(splistCharacterName);
}
//加入标题
wsheet.mergeCells(0,0,i-1,0);
wsheet.addCell(new Label(0,0,title,wcfFC));
//加入打印时间
wsheet.addCell(new Label(i-2,1,"打印日期:"));
wsheet.addCell(new Label(i-1,1,today));
//下面开始输出结果
for(int j=0;jObject obj=res.get(j);
Class cla=obj.getClass();
Method methods[]=cla.getDeclaredMethods();
for(int m=0;mfor(int k=0;kif(methods[m].getName().startsWith("get"+splistCharacterId[k])){
wsheet.addCell(new Label(k,j+4,String.valueOf(methods[m].invoke(obj,null)),wcfFC2));
}
}
}
}
//写入流中
wbook.write();
wbook.close();
os.close();
}catch(IOException e){
e.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
为伊消得人憔悴,衣带渐宽终不侮!
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 16, 2005 4:05:01 PM  引用回复  发消息
希望对大家有所帮助~~~~
为伊消得人憔悴,衣带渐宽终不侮!
l
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 17, 2005 10:21:05 AM  引用回复  发消息
EN 对我很有帮助啊 谢谢你
俺很期待共产主义(想想:劳动是奢恀的啊,想要什么有什么啊。。。真希望早点来到啊~)
JAVA群:8541943 技术论坛:http://www.j-unite.com
apusic [普通用户]
发帖数: 211
活跃积分: 186
技术积分: 0
可用币值: 71
注册时间: 2003-10-14
用户状态:正常
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 17, 2005 12:31:34 PM  引用回复  发消息
收藏,谢谢好人
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 17, 2005 3:55:43 PM  引用回复  发消息
能够对大家有所帮助我也就满足了~
不过我上面的代码为了和查询(我的查询需要输出5个字段,而报表输出需要输出8个字段)重用SQL语句,所以在输出数据的时候要去验证一下字段,如果是查询结果不多的小项目,倒没什么影响,但如果结果数特别大,那就要硬性规定字段名和结果数要一致,然后把验证字段的语句删除,可以提高性能!
呵呵~
为伊消得人憔悴,衣带渐宽终不侮!
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 18, 2005 9:20:37 AM  引用回复  发消息
请问你使用的是jxl什么版本?怎么我下载的JXL中没有jxl.write.WritableFont类?
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 18, 2005 2:20:29 PM 加1分  引用回复  发消息
jxl.jar (526.4 K)
我把JXL的包上传上来吧
为伊消得人憔悴,衣带渐宽终不侮!
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 18, 2005 5:06:36 PM  引用回复  发消息
为何下载后的Excel内容是乱码?
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Aug 19, 2005 4:52:48 PM  引用回复  发消息
请检查数据库的字符集~~我的是or数据库~
为伊消得人憔悴,衣带渐宽终不侮!
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Sep 13, 2005 9:23:22 AM  引用回复  发消息
做过
看一下他的API就ok了
z
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Sep 17, 2005 1:11:53 PM  引用回复  发消息
谢谢楼主了,我正需要呢。呵呵
在论坛学习效果真好
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Sep 18, 2005 11:59:50 PM  引用回复  发消息
jxl.write.WritableFont wfc1 = new jxl.write.WritableFont(WritableFont.COURIER,10, WritableFont.BOLD,true);
里面的字体可以改成宋体或者黑体等想要的中文字体吗?
怎么做?
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Sep 19, 2005 9:53:49 AM  引用回复  发消息
jxl.write.WritableFont wfc1= new jxl.write.WritableFont(WritableFont.createFont("宋体"),12, WritableFont.NO_BOLD,true);
我们的产品
我的Blog
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Sep 20, 2005 10:35:21 AM  引用回复  发消息
jxl确实是个控制excel的好东西
e
Re: (原创)用jxl输出excel的源代码(送给以前和我一样对excel输出迷茫的同志们)
提交时间: Sep 23, 2005 11:43:52 AM  引用回复  发消息
收藏了,谢谢楼主
共同进步