在java中制作Excel表,需要先架包:jxl-2.6.jar(或者其他版本),里面比较常用的类有:
1、Workbook;
3、WritableCellFormat;
4、WritableFont;
5、WritableSheet;
6、WritableWorkbook;
public void exportDealerRepertory() throws Exception{
WritableWorkbook book = Workbook.createWorkbook(this.file);
//创建一张表
WritableSheet sheet = book.createSheet("商品库存信息表", 0);
//表头
String [] head=new String[]{"商品条码","款号","商品名称","品牌","商品类型","颜色","尺码","单位"};
WritableCellFormat cf = new WritableCellFormat(new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.NO_BOLD,
false, UnderlineStyle.NO_UNDERLINE,Colour.RED/*设定字体颜色*/));;
for(int i=0;i<head.length;i++){
add(sheet, i, 0, head[i],cf);
}
WritableCellFormat cf_green = new WritableCellFormat(cf);
cf_green.setBackground(Colour.GREEN);//设定背景颜色
WritableCellFormat cf_red = new WritableCellFormat(cf);
cf_red.setBackground(Colour.RED);//设定背景颜色
WritableCellFormat cf_yellow = new WritableCellFormat(cf);
cf_yellow.setBackground(Colour.YELLOW);//设定背景颜色
//添加数据
for(int i=0;i<list.size();i++){
VGoods vGoods=(VGoods)list.get(i);
int row=i+1;
if (vGoods.getAmount()!=null&&vGoods.getAmount()>5) {//绿色
cf = cf_green;
}else if (vGoods.getAmount()!=null&&vGoods.getAmount()<=0) {//红色
cf = cf_red;
}else{//黄色
cf = cf_yellow;
}
add(sheet, 0, row, vGoods.getBarcode(),cf); //条码
add(sheet, 1, row, vGoods.getType(),cf); //款号
add(sheet, 2, row, vGoods.getName(),cf); //商品名
add(sheet, 3, row, vGoods.getBname(),cf); //品牌
add(sheet, 4, row, vGoods.getGtname(),cf); //类型
add(sheet, 5, row, vGoods.getColor(),cf); //颜色
add(sheet, 6, row, vGoods.getSize(),cf); //尺码
add(sheet, 7, row, vGoods.getUnit(),cf); //单位
}
//输出
book.write();
book.close();
//将文件通过文件流的方式输出到客户端
//--
//设置response对象的相关信息
//输出类型
response.setContentType("application/x-msdownload");
//文件大小
response.setContentLength((int) file.length());
//文件名
response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes(), "iso-8859-1"));
// 从response对象中得到输出流,准备下载
ServletOutputStream myout = response.getOutputStream();
FileInputStream stream=new FileInputStream(file);
byte data[]=new byte[4096];
int size=0;
size=stream.read(data);
// 开始循环写出数据
while (size!=-1) {
myout.write(data,0,size);
size=stream.read(data);
}
myout.flush();
myout.close();
stream.close();
//删除文件
file.delete();
}